I have two threads that want to synchonize on the same object. Thead A
needs to be able to interrupt Thread B
if a certain condition has been fullfilled. Here is some pseudo-code of what the two threads do/should do.
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;
}
}
}
Here's the situation I can't resolve. Thread A
grabs the shared resource and does some stuff. Meanwhile, Thread B
reaches the synchronized block, and awaits for A
to release its shared resource. Thread A
, while doing stuff, realized that Thread B should not have the shared resource, and tries to interrupt Thread B
. But Thread B
has already surpassed the points where an InteruptedException
could be thrown.
My question is, is there any way to interrupt a thread while it is waiting to be synchronized
on something?