アプリケーションで複数のスレッドを使用しています。基本的に私はコンボボックスを持っており、受信トレイを選択するとp1が再開してp2が一時停止し、送信を選択するとp2が開始してp1が停止します。以下はコードです(私はそれが完璧ではないと確信しています)
public void modifyText(ModifyEvent e) {
if (combo.getText().equals("Inbox"))
{
synchronized(p2)
{
p2.cont = false;
}
table.removeAll();
synchronized(p1)
{
p1.cont = true;
p1.notify();
}
}
else if (combo.getText().equals("Sent"))
{
synchronized(p2)
{
p1.cont = false;
}
table.removeAll();
synchronized(p1)
{
p2.cont = true;
p2.notify();
}
}
}
});
P1とP2の場合、whileループ内にこれがあります。
synchronized (this) {
while (cont == false)
try {
wait();
} catch (Exception e) {
}
}
...そのままで動作しています(私はスレッドの初心者です)。コンボボックスで[送信済み]を押すと、IllegalStateMonitorExceptionが発生します。誰かが私が問題plzを解決するのを手伝ってもらえますか?
よろしくお願いいたします。Krt_Malta