我有一個不尋常的問題。 我有一個函數,在這個函數中的操作可以一次由兩個線程完成。只允許兩個線程在一個函數上運行
static int iCount = 1;
public synchronized void myFunct(){
while(iCount >= 3)
{
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
iCount++;
//Do Stuffs
//After operation decrement count
iCount --;
notifyAll();
}
我想要做的是,我想只允許兩個線程做一些操作,其他線程必須等待。
但是在這裏,前兩個線程遞增計數,並且操作和其他線程進入等待狀態,但沒有得到通知。
我想我是俯視的東西。
是的。我可以使用信號量。但是我更關心上面這段代碼中的錯誤。 – 2010-09-14 13:22:24
信號量已經存在了很長時間,您可以在這裏閱讀Dijkstra的原始文件 - http://userweb.cs.utexas.edu/users/EWD/transcriptions/EWD01xx/EWD123.html - 沒有重新發明輪子的意思除非它的某些操作系統課程或類似的部分,在這種情況下,你應該標記爲「家庭作業」 – 2010-09-14 13:35:59