我知道我需要适本地使用同步以避免使用多线程时出现死锁,但我想知道:
我是否需要同步修改变量的值和检查变量,或者我只需要在修改时同步值,但当我检查变量时却没有?
最佳答案
关于死锁:Darkhogg 已经正确指出死锁是由于不正确的同步和工作流程造成的。
同步状态修改和状态观察:是的,您需要同步两者。输入同步方法时获得的对象锁的效果是,没有其他线程可以输入需要相同对象锁(在同一对象上同步)的相同或另一个同步代码块。也就是说,如果您不同步观察对象状态的代码,则该代码可能会与修改状态的同步代码同时执行,并且您可能会读取无效的对象状态。
关于java - 线程死锁和同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21362657/