java - 静态变量的线程安全

标签 java multithreading thread-safety

class ABC implements Runnable {
    private static int a;
    private static int b;
    public void run() {
    }
}

我有一个 Java 类,如上所示。我有这个类的多个线程。在 run() 方法中,变量 ab 分别递增几次。在每个增量中,我将这些变量放入一个哈希表中。

因此,每个线程都会增加两个变量并将它们放入哈希表中。如何使这些操作线程安全?

最佳答案

我会使用 AtomicInteger ,它被设计为线程安全的并且非常容易使用并且给应用程序带来了绝对最小的同步开销:

class ABC implements Runnable {
    private static AtomicInteger a;
    private static AtomicInteger b;
    public void run() {
        // effectively a++, but no need for explicit synchronization!
        a.incrementAndGet(); 
    }
}

// In some other thread:

int i = ABC.a.intValue(); // thread-safe without explicit synchronization

关于java - 静态变量的线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7442559/

相关文章:

java - Junit 测试失败但构建成功(Ant)

C++11 <thread> 使用 OpenGL 进行多线程渲染可防止主线程读取标准输入

java - 我怎么能做一个线程循环?

android - Android中AsyncTask启动但不处理

c - C 函数 recvfrom 和 sendto 是否互斥?

python - 如何在两个线程之间共享一个变量

java - 如何将带有 ReentrantLock 的 Thread 包装到 CompletableFuture 调用中?

java - 关于Spring MVC如何使用@RequestMapping注解实现RESTfull架构的一些说明

java - 将 JcomboBox.getSelectedItem() 连接到类

Java 8 Spliterator(或类似的)返回一个值,前提是只有一个值