Java同步块

Aka*_*jan 1 java synchronization synchronized

更新该引用的同步块中的引用是否有效?例如:

Synchronized(list)
{
  list = new ArrayList();
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*ton 5

当你写作

synchronized (list)
Run Code Online (Sandbox Code Playgroud)

锁是一个对象,而不是变量/字段list.

如果你这样做

synchronized (list) {
    list = new ArrayList<>();
}
Run Code Online (Sandbox Code Playgroud)

您正在创建一个新对象,并重新分配一个变量/字段 - 但您没有更改锁定 - 锁定仍然是之前的对象.