如何从其他线程向线程发送中断信号

时间:2018-04-17 07:15:16

标签: java multithreading

假设我有两个线程使用相同类的实例,它充当监视器。例如,Thread1和Thread2使用类ABC'o'的相同实例。

现在ABC类中有同步方法doProcess(),两个线程都在调用它。我在doProcess()中有一些条件,因为第一个线程处于wait()状态。现在当第二个线程进入doProcess()时,有条件告诉它终止整个处理。

一种解决方案是通知第一个线程并更新一些标志,告诉它不要再次阻塞并完成。

我在想什么,我可以从我的监视器对象'o'(就像notify和notifyAll)发送任何信号给所有等待线程中断和终止吗?

EDITED First Solution:

    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;
        }
    }

1 个答案:

答案 0 :(得分:0)

是。方法是.interrupt() 这将在接收线程中抛出和InterruptedException,这应该在run()方法中处理。 您仍然需要在正在运行的线程上设置标志,因为如果线程没有阻塞,则不会发生InterruptedException。