JAVA中线程同步的问题

图片说明

图片说明

你的num是类自己的成员变量,对于每一个对象都有属于自己的num,除非你加上static

可以试着使用实现Runable接口试试

答案就在这里:关于Java中线程同步的问题
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

http://www.cnblogs.com/GnagWang/archive/2011/02/27/1966606.html
认真看,对你有帮助

改为 synchronized(num) 即可!

将while循环体放在同步代码块中。
这个问题产生的原因分析:是多个线程同时访问num 变量时,当两个线程同时读取到相同的某个值100时,只能有一个线程1先获取锁而执行代码块,另一个线程2等待锁释放后继续执行,但使用的值确是最初读到的值,而非线程1操作后的值。
此处加锁应将所有对共享变量的访问都放在同步代码块中,才能保证同一时刻只能有一个持有锁并操作该共享变量,才能保证其他线程获取到最新的数据。