本帖最后由 NNERO 于 2014-4-26 09:53 编辑
- public class Text111
- {
- public static void main(String[] args)
- {
- Res r1 = new Res("nero",18);
- Thread t1 = new Thread(r1);
- Thread t2 = new Thread(r1);
- Thread t3 = new Thread(r1);
- Thread t4 = new Thread(r1);
-
- t1.start();
- t2.start();
- t3.start();
- t4.start();
- }
- }
- class Res implements Runnable{
- String name;
- int age;
- int count = 100;
- Object obj = new Object();
-
- public Res(String name, int age) {
- super();
- this.name = name;
- this.age = age;
- }
- public void run(){
- while(true){
-
- synchronized (obj) {
- count--;
- System.out.println(Thread.currentThread().getName()+"..."+name+"..."+age+"..."+count);
- if(count<0)
- break;
- }
-
- }
- }
- }
复制代码 上面的这个程序,用4个线程来运行同一对象,如果没用同步代码块,我知道
这里就会出安全问题,导致数据错误。
但是我这里也用了同步代码块了。最后打印结果会有-1,-2,-3,-4出现,这是怎么回事?
应该线程安全了啊。求解。。。
|