Thread1 と Thread2 という 2 つの異なるクラスに 2 つのスレッドがあります。
スレッド 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(); 別のプログラムの他の場所で発生しますが、両方のスレッドが開始されていると仮定します。
問題は、wait() をスレッド 1 のどこに置くべきかわからないことです。
私が欲しいもの:スレッド1のどこにいても、スレッド2がスレッド1を中断できるようにします。Thread1 の run() メソッドに合計 100 の for ループ、while ループ、if ステートメントがある場合、チェックポイントを配置したくない
if (paused)
{
wait();
}
Thread1 のこれらのループのすべての内部。どのループ/if ステートメントにいるかに関係なく、Thread1 の run() メソッドを一時停止する方法はありますか? (つまり、現在 Thread1 のどこにいるかに関係なく?)
ありがとう!