【发布时间】:2018-04-17 07:15:15
【问题描述】:
假设我有两个线程使用同一类的实例,它充当监视器。例如 Thread1 和 Thread2 使用 ABC 'o' 类的相同实例。
现在在 ABC 类中有一个同步方法 doProcess() 被两个线程调用。我在 doProcess() 中有一些条件,因为第一个线程处于 wait() 状态。现在,当第二个线程进入 doProcess() 时,有一个条件告诉它终止整个处理过程。
一个解决方案是通知第一个线程并更新一些标志以告诉它不要再次阻塞并完成。
我在想什么,我可以从我的监控对象“o”(就像 notify 和 notifyAll)发送任何信号到所有等待的线程以中断和终止吗?
编辑的第一个解决方案:
sync doProcess()
{
while( you are thread1 and !flag )
{
wait(); //line 3
}
if( you are thread2)
{
flag = true;
notifyAll(); //can i send send any interrupt signal to terminate all threads in line 3 itself;
}
}
【问题讨论】:
-
没有
o.notify()如何通知第一个线程? -
@user6690200 你是对的,通过监控对象通知。
-
我的意思是,
One solution is to notify....和What I was thinking....有什么区别,你能加点代码解释一下吗? -
@user6690200 看到我编辑的问题。
标签: java multithreading