>>801
ものすごく適当なエスパーで、そんなことしてない、って言われそうだけど、
Proc1の if(a) の a は正しくフィールドの a ?
void hoge(Boolean a) {
 ...
 if (a) {
 ...
}
みたいなことにはなってない?
あとは基本的だけど Proc2で a = false せずに semaphone.release() するルートがないかどうか

さらに重箱だけどフィールド a は Boolean じゃなくて boolean にした方がよいかと(typo でなければ