gpt4 book ai didi

java - 线程安全计数器原子整数不起作用

转载 作者:行者123 更新时间:2023-12-01 19:28:26 25 4
gpt4 key购买 nike

我有(比如说)10 个线程。所有线程都会增加计数器,并且将记录相同的内容。计数器是一个原子整数,但有时我会在计数器中得到重复的值。我期望的是 - 计数器是线程安全的,允许计数器一次由一个唯一的线程递增,一次由一个唯一的线程读取。我应该采取什么不同的做法?谢谢

Class A{
public void AM(){
ExecutorService executor = Executors.newFixedThreadPool(threadPoolCount);
List tasks = new ArrayList(tasklist);
for(loop tasks) {
Future<t> futureObjects = executor.invokeAll(task);
}
}
}
Class B implements Callable{
public Object call(){
//call method log
}
}
Class C {
static AtomicInteger counter = new AtomicInteger(1);
public void log(){
log("counter: "+counter)
counter.getAndIncrement();
}
}

最佳答案

使用下面给出的代码,您不会在日志中看到重复的值。您尝试在更新之前打印,这可能会导致多个线程打印相同的值:

Class C {
static AtomicInteger counter = new AtomicInteger(1);
public void log(){
int count = counter.getAndIncrement();
log("counter: "+count)
}
}

关于java - 线程安全计数器原子整数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60651156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com