同步(静态变量)的效果

Oh *_*oon 4 java concurrency

使用静态变量进行同步有什么影响?

public class Something {

    public static final String LOCK = "lala";

    public void doSomething(){
        synchronized(LOCK){
        ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 5

一次只能调用一个线程doSomething(),无论是什么Something实例是,因为所有实例共享同一个锁。

为了完整起见,我将在这里重复@assylias 的评论:不要同步公共变量,也不要同步字符串文字,即使由于字符串池是私有的,它们也会被共享。您不希望任何其他不相关的类在同一个锁上同步,这样做会引入诸如死锁之类的副作用。