1 回答

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊
問(wèn)題是您已將locks每個(gè)SumTask對(duì)象分開(kāi)。這些對(duì)象應(yīng)該共享locks。
lock在TestSynchronized()方法中創(chuàng)建一次對(duì)象。這應(yīng)該由所有new SumTask(lock)對(duì)象共享。
所以你的SumTask班級(jí)看起來(lái)像:
class SumTask implements Runnable {
Lock lock;
public SumTask(Lock commonLock) {
this.lock = commonLock;
}
public void run() {
lock.lock();
int value = sum.intValue() + 1;
sum = new Integer(value);
lock.unlock(); // Release the lock
}
}
并且不要忘記commonLock在TestSynchronized()方法中創(chuàng)建一個(gè)對(duì)象:
Lock lock = new ReentrantLock();
executor.execute(new SumTask(commonLock));
添加回答
舉報(bào)