我真的想不出任何是否有一個示例代碼,其中@synchronized會死鎖?
有一件事我能想到的是
@synchronized (self)
{
@synchronized (self){}
}
但這不會死鎖,因爲鎖是遞歸的將只是允許同一線程去。因此,基本上可以不死鎖,如果整個程序只使用一個變量
另一個我能想到的是
@synchronized (A)
{
@synchronized (B){}
}
在一個線程
和
@synchronized (B)
{
@synchronized (A){}
}
在另一個
。我在這裏糾正?
如何避免死鎖呢?任何簡單的規則?
我的規則是隻使用一個且只有一個鎖,並且這對所有人都是可見的。這是另一個很好的規則。 –
適用於所有人 –