我在我的应用程序中使用了多线程。基本上,我有一个组合框,选择收件箱时,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异常。请问有人能帮我解决这个问题吗?
谢谢和问候, Krt_Malta