我有两个线程想要在同一个对象上同步。如果某个条件已经满足, TheadA
需要能够中断 Thread 。B
这是两个线程做什么/应该做什么的一些伪代码。
A:
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
可以抛出 an 的点。
我的问题是,有没有办法在线程等待时中断线程synchronized
?