没有synchronized时,run中运行的代码,有可能在其中一个线程没有执行完时,另外一个线程进入,从而改变了x或y的值。
解决方案 »
- 请教GUI,关于JTabbedPane问题
- JDK 如何自动升级?
- IE在发送汉字的时候采用的编码是什么?
- 关于 JdbComboBox 取出数据库数据以后怎么获得选定的数据的问题
- 关于打包后工具栏图标不能正常显示 求助 附上源码
- xml解析问题
- 编译就就有一个错误,帮忙看一下!
- 麻烦帮我说明一下这个个关键的意义及使用好吗?我查了Think In Java都没查到.
- 各位高手,急救啊!!!!!
- 原来char c=70和char c='\u0070'有区别的
- 【SWT】 如何设置 JFace 的 Dialog 的大小?
- 求myeclipse开发Hibernate的动画?前两看我下过,现在找不到了。
当上一个线程执行到x++时,此时转入另一个线程,这时执行y++,
然后打印x= a, y=a + 1;
所以会有不同的情况。
因为
7. (new Thread(that)).start();
8. (new Thread(that)).start();
这会执行同一个内存中的数据,且不会重复更改同一个数据。
这也是Runnable接口的好处,可以在不同的地方去共同操作同一个对象,如一个售票系统,票是唯一的,用Runnable接口,在不同的地方都用new Thread(所有票对象),这样就能保证不会把同一张票卖出多次。