使用静态变量进行同步有什么影响?
public class Something {
public static final String LOCK = "lala";
public void doSomething(){
synchronized(LOCK){
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
一次只能调用一个线程doSomething(),无论是什么Something实例是,因为所有实例共享同一个锁。
为了完整起见,我将在这里重复@assylias 的评论:不要同步公共变量,也不要同步字符串文字,即使由于字符串池是私有的,它们也会被共享。您不希望任何其他不相关的类在同一个锁上同步,这样做会引入诸如死锁之类的副作用。
| 归档时间: |
|
| 查看次数: |
2422 次 |
| 最近记录: |