在这两句执行的任意时刻

2019-09-06 22:03:00
hjcadmin
原创
184
修正代码,使用外界共享对象作为锁,例如用final BB b,或者直接对list和set进行加锁,就能保证run中的代码每次只有一个线程能获取到锁。   这两句可没有在锁区域内,一个线程完毕后,在这两句执行的任意时刻,另一个线程可能已经开始执行,并改写了list   你的工作线程的run方法中synchronize是用的this,是指当前线程对象,这样的话,每个线程都是有自己的this对象,所有线程run时锁都不一样,怎么能保证对共享变量的同步呢?那必定会出现同时操作set和list共享变量的情况啊   这个问题,主要是每个工作线程在run中用的锁不同,你的代码锁在线程对象this上,就相当于根本没有同步处理。
文章分类
联系我们
联系人: newBB
Email: 1586171493@qq.com
QQ: 1586171493