このコードブロックはどのように機能しますか:
boolean flag=true;
while(flag){
wait();
flag=!flag;
}
flag = !flag は実行されますか? さらに、フラグを静的変数 (インスタンス間で共有) として設定し、次のコードを含む 2 つのスレッドを開始する場合:
for(int i=0;i<5;i++){
flag=!flag;
while(flag){
System.out.println("*");
wait();
}
notify();
}
乱数の '*' を出力した後にプログラムが停止するのはなぜですか? (同期を使用した後でも)。while ループ内での wait() の動作を説明してください。