2 つのセマフォへの排他的アクセスを取得した場合にのみアクションを実行するスレッドがあります。
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();
}
}
}
}
}
セマフォの取得カウントを混乱させないように、これを記述するより良い方法はありますか? セマフォが現在のスレッドによって取得されているかどうかを確認する方法はありますか?