java - 单条语句同步?

标签 java multithreading synchronization

如果我有一个只有一个这样的语句的 getter 方法

public class NumberClass{
    int number;

    public int getNumber() {
        return number;
    }
    ...
}

并且多个线程访问此方法,我是否必须同步此方法,或者因为它只有一条语句而没有必要??

最佳答案

I have to synchronize this [get] method or it is not necessary since it has only one statement??

它与 1 个或多个语句无关。这取决于该值是否已在另一个线程中更新,以及您是否希望所有线程看到一致的值。

如果 number 字段在线程 1 中更新,则线程 2 可能会获取原始值或新值,具体取决于更新的同步方式。要正确发布值,set 和 get 方法都需要同步

如果您只是尝试共享 int 值,那么将 number 字段标记为 volatile 就可以了,或者使用 AtomicInteger 在多个线程之间可靠地共享值可能更合适。

private volatile int number;

或使用:

private AtomicInteger number = new AtomicInteger();

关于java - 单条语句同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9669677/

相关文章:

java - Android Dialog 和 AsyncTask 导致 UI 卡住

c - C中的多线程和O3编译

matlab - 能同步Matlab的数据采集工具箱和图像采集工具箱吗?

java - 使用 JUnit 进行测试时,Spring MVC 中的 Hibernate validator 不工作

java - 修改列表不应影响其对象 - Java

java - 如何使用PrintWriter和flush()在文本文件上打印内容?

java - 查询一组资源的高效同步

ios - 在 iOS 应用程序和 mac 之间同步信息的应用程序

java - 如何将通用文件发送到 Jersey 服务并正确接收?

java - ArrayList<recipe> 到 JList