Java同步块(synchronized block)

标签 java synchronization synchronized

在引用的同步块(synchronized block)中更新引用是否有效? 例如:

Synchronized(list)
{
  list = new ArrayList();
}

最佳答案

当你写的时候

synchronized (list)

锁是一个对象,而不是变量/字段列表

如果你这样做

synchronized (list) {
    list = new ArrayList<>();
}

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

关于Java同步块(synchronized block),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36627649/

相关文章:

git - 跨计算机同步 git 存储库

java - 同步方法在停止一个线程和另一个线程方面的重要性是什么?

java同步问题

java - 如何使用谐波级数获得更高的 PI 精度

java - 我怎样才能像这个应用程序中的那样制作信息屏幕

java - java线程中的"Monitor"

Java AWT drawImage 竞争条件 - 如何使用同步来避免它

java - repaint() 没有被 actionlistener 正确调用

java - 这里需要 volatile 吗?

php - 在 PHP 中运行异步函数的最有效方法是什么?