我有两个线程想要在同一个对象上同步。线程A需要在满足某个条件时能够中断线程B。以下是这两个线程应该做的一些伪代码。
这是我无法解决的情况:
A:
public void run()
{
while(true)
{
//Do stuff
synchronized(shared)
{
//Do more stuff
if(condition)
{
B.interrupt();
}
}
}
}
B:
public void run()
{
while(true)
{
try
{
//Do stuff
synchronized(shared)
{
//Do more stuff
}
}
catch(InterruptedException e)
{
continue;
}
}
}
这是我无法解决的情况:
- 线程
A
占用了共享资源并执行一些操作。 - 同时,线程
B
到达同步块,并等待A
释放其共享资源。 - 线程
A
在执行操作时意识到线程B
不应该拥有共享资源,并尝试中断线程B
。但是线程B
已经超过了可能抛出InterruptedException
的点。