我有一個線程只有在它獲得2個信號量的獨佔訪問時纔會執行一個動作。java信號量習語
public void run(){
boolean a1=false;
boolean a2=false;
boolean a3=false;
while(true){
try{
if(res[1].tryAcquire()==true){
a1=true;
if((res[2].tryAcquire()==true){
a2=true;
if(res[3].tryAcquire()==true)){
a3=true;
System.out.println("Rolled the tobacco");
}
}
}
}
finally{
if(a1){
a1=false;
res[1].release();
}
if(a2){
a2=false;
res[2].release();
}
if(a3){
a3=false;
res[3].release();
}
}
}
}
}
有沒有更好的方法來寫這個,以確保我們不會打擾信號量獲得計數? 有沒有辦法檢查當前線程是否獲取了信號量?
非常好。正如我所看到的,您不允許特別在代碼中修復明顯的錯誤。好。 – Andremoniy
@Andremoniy:「我什麼都沒做」既不拒絕變化,現在thSoft糾正了;感謝兩者。 –