Java Concurrent API 的 Lock 无法按预期工作

问题描述

我正在尝试使用 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 (将#修改为@)