这个同步写法对吗?该怎么处理

这个同步写法对吗?Java code//这是公享的类public class Resource{}线程Thread里,含有Resource的引用obj,

这个同步写法对吗?

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都要同步,否则虽保证了数据的可见性,但不能保证数据的一致性,会有脏数据产生