62,614
社区成员
发帖
与我相关
我的任务
分享
public class ThreadValue {
//需要共享的资源
public static Integer count = 0;//改之前是Integer
}
public class ThreadValue {
//需要共享的资源
public static int count = 0;
}
//另一个线程的同步块代码
synchronized(ThreadValue.count){//事实上问题就出现在这里了
ThreadValue.count++;
}
/*********************解决方法***********************************/
改为这样就可以了synchronized(ThreadValue.class)
为什么呢?原因就是ThreadValue.count++;后,此时的count已经被重新创建了,就是说++后的ThreadValue.count已经是另外一个新对象了,因此synchronized(ThreadValue.count)不能达到同步资源count的效果。