public void setXY(int i)没有同步,所以就当多个线程同时访问的时候就有可能出现X和Y的值不一致的情况……比如第一个线程把X设为1后进入休眠,然后第二个线程把X和Y都设为2,然后第一个线程退出休眠,把Y设为1……明白了吗?
解决方案 »
- 求助io读取txt文本的问题!请各位高手支招!
- java(j2se5/6) 中的for(Class face:c.getIntegerfaces())
- direct buffer 和heap buffer 缓冲区的区别
- java Object读取的问题!
- 哪个好心人帮我看看这个程序是做什么的啊,谢谢了!
- 请问取得oracle 中long raw 字段的值
- 各位大虾:请问哪里有面向对象思想与道家哲学方面联系的文章呢,我对这个很感兴趣,不知怎么才能找到?
- RMI的一大疑问——Stub生成
- 注释文档和classpath
- jav反编译程序在哪儿有下载?
- 怎样用java快速实现zip文件的压缩解压缩?(给分20!)
- 对together有兴趣得请进,关于together 5.0+weblogic 6.1
在多线程程序中如果多个线程共享相同的对象,且每一个线程都调用了能改变它状态的方法,按照对象被访问次序的不同,会产生不同的不可靠对象,即不确定性。本题的check()方法没有使用同步化机制(synchronized),当一个线程在执行check()方法的某步时就有可能被中断使得 x 、 y的值不确定。
在调用了setXY(i)后,什么情况下调用check()会返回true?
否则我对以上各位的解释非常非常的不懂
如果没有“在调用了setXY(i)后”这个条件,还请各位在详细解释解释
你理解的没错。to all
经过大家的解释,我明白多了