Java - 多线程增量

ano*_*mer 3 java concurrency multithreading synchronization

我的申请中有以下课程

public class InsertErrorLinesHandler {

    private int currentCount;

    public void insertErrorLine() {
        //do something...
        currentCount++;
    }
}
Run Code Online (Sandbox Code Playgroud)

我有多个线程使用相同的实例InsertErrorLinesHandler,特别是调用insertErrorLine方法.在所有这些线程都停止后,我currentCount从这个实例中得到了.

问题是 - 如何重写这个类以确保不存在任何并发问题?我想要的是确保,该currentCount值将是来自线程的方法调用的计数.我应该使用静态方法和静态变量吗?让方法同步?变量易变?

谢谢!

Zim*_*oot 8

我建议使用AtomicInteger,它具有线程安全的增量方法

  • Brian Goetz 的“Java Concurrency in Practice”一书专门解决了保持可从多个线程访问的计数器的问题。他的解决方案是使用`AtomicLong`。简单,有效。 (2认同)