您的SyncCounter根本不是线程安全的。可变方法的增量和减量应同步。现在,实现此类的正确方法是原子式的。例如:
class SyncCounter { private final AtomicInteger x; public SyncCounter() { this(0); } public SyncCounter(int x) { this.x = new AtomicInteger(x); } int getX() { return x.get(); } void setX(int x) { this.x.set(x); } int increment() { return x.incrementAndGet(); } int decrement() { return x.decrementAndGet(); }}和测试代码:
final Thread incThread = new Thread(() -> { count.increment(); }); final Thread decThread = new Thread(() -> { count.decrement(); }); Thread displayThread = new Thread(() -> { incThread.join(); decThread.join(); System.out.println("Count value : " + count.getX()); });


