Pra*_*ngh -1 java synchronization
我有一个问题,有什么区别
StringBuilder sb = new StringBuilder();
public void sync(){
synchronized(sb){
};
}
Run Code Online (Sandbox Code Playgroud)
和
public void sync(){
synchronized(this){
};
}
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,您锁定"sb"变量,在第二种情况下,锁定"this"对象.这很明显,但我想你想知道哪个更好.
好吧,第一种情况更好,因为你锁定了一个局部变量(考虑将其设为私有)并且你很确定没有其他人会锁定它而不是你.如果您锁定"this",任何其他线程都可以使用此对象锁定,从而阻止您运行同步代码(而您可以安全地运行).
| 归档时间: |
|
| 查看次数: |
113 次 |
| 最近记录: |