问题描述
我正在尝试使用 Java Concurrent 的锁 API 同步 2 个线程。该代码基本上使用 2 个线程将计数器增加到某个数字,但即使在使用锁之后,我得到的结果也小于所述数字。 代码-
import java.util.concurrent.*;
import java.util.concurrent.locks.reentrantlock;
class DemoClass {
public int count =0;
public reentrantlock lock = new reentrantlock();
public void increment() {
lock.lock();
try {
count++;
} finally {
lock.unlock();
}
}
}
public class Main {
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(2);
DemoClass demoClass = new DemoClass();
int i=0;
for(;i<=10000;i++) {
executor.submit(demoClass::increment);
}
executor.shutdown();
System.out.println( demoClass.count); // 10000
}
}
不确定我在这里做错了什么。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)