【发布时间】:2010-02-21 13:47:42
【问题描述】:
我有两个线程想要在同一个对象上同步。 Thead A 需要能够在满足某个条件时中断 Thread B。这是两个线程做什么/应该做什么的一些伪代码。
答:
public void run()
{
while(true)
{
//Do stuff
synchronized(shared)
{
//Do more stuff
if(condition)
{
B.interrupt();
}
}
}
}
乙:
public void run()
{
while(true)
{
try
{
//Do stuff
synchronized(shared)
{
//Do more stuff
}
}
catch(InterruptedException e)
{
continue;
}
}
}
这是我无法解决的情况:
- 线程
A获取共享资源并执行一些操作。 - 同时,线程
B到达同步块,并等待A释放其共享资源。 - 线程
A,在做事的时候,意识到线程B不应该拥有共享资源,并试图中断线程B。但是 ThreadB已经超过了可以抛出InterruptedException的点。
我的问题是,有没有办法在线程等待synchronized 时中断它?
【问题讨论】:
标签: java multithreading interrupt synchronized