这个同步写法对吗?该怎么处理
阅读
- Java code
//这是公享的类 public class Resource{ }
线程Thread里,含有Resource的引用obj,方法change会改变Resouce的状态
- Java code
public void change(){ synchronized(obj){ .... } }
这样写对吗?同步块不要非写在共享的Resouce里吧。
------解决方案--------------------
你使用的是obj这个对象的锁来同步Resouce,是没有问题的
前提是,如果对Resouce状态的更改本身是原子性的,那么只要同步modify、write Resouce状态即可,这样就可以保证写数据对其他线程的可见性
如果对Resouce状态的更改不是原子性的,尤其是形如check-modify-write的操作,对read、modify、write都要同步,否则虽保证了数据的可见性,但不能保证数据的一致性,会有脏数据产生
阅读
上一篇:while循环有关问题 初学者提问 下一篇:返回列表