我在两个不同的类 Thread1 和 Thread2 中有两个线程。
在线程 1 我有这样的事情:
public class Thread1
{
public static boolean pause = false;
public void run()
{
while(true)
{
synchronized (myLock)
{
for (int i=0; i<5; i++)
{
//a for loop
}
if (someCondition1)
{
//an if statement
}
while (someCondition2)
{
//a while loop
}
}
}
}
}
在线程 2 我有这样的事情:
public void run()
{
Thread1.pause=true;
synchronized(myLock)
{
//do some mutually exclusive task while Thread1 waits
}
Thread1.pause=false;
myLock.notify();
}
}
当然,Thread1.start(); 和 Thread2.start(); 发生在另一个程序的其他地方,但假设两个线程都已启动。
问题是我不知道在线程 1 中将 wait() 放在哪里。
我想要什么:无论我在 Thread1 中的哪个位置,线程 2 都能够中断 Thread1。如果我在 Thread1 的 run() 方法中总共有 100 个 for 循环、while 循环和 if 语句,我不想设置检查点
if (paused)
{
wait();
}
在 Thread1 中的每个循环中。有没有办法暂停 Thread1 的 run() 方法,不管我在哪个循环/if 语句中?(即无论我目前在 Thread1 中的哪个位置?)
谢谢!