ループA
内で定期的なアクションを実行するスレッドがあります。次に、ユーザー入力をリッスンするwhile(running)
別のスレッド があります。B
ユーザーがボタンを押すと、スレッドB
は新しいスレッドを生成してタスクを実行します (これを Thread のインスタンスと呼びましょうC
)。このタスクには、インターネット経由での情報の送信が含まれ、最大 20 秒かかる場合があります。C
一度に複数のアクティブなインスタンスが存在する可能性があります。
私が抱えている問題はこれです。A
現在アクティブなタイプ「C」のスレッドがない場合にのみ、スレッドにそのコードを実行させたいと思います。より明確にするために、スレッド A は次のようになります。
class ThreadA extends Thread{
public void run(){
while(running){
performAction();
Thread.sleep(1000);
}
}
}
のインスタンスC
が検出された場合、明らかに私はperformAction()
呼び出されたくありません。スレッドが現在実行中の場合、performAction()
現在の進行状況で実行を停止したいと思います。
スレッド A 内から生成されたスレッドの参照を取得する方法がわからないため、続行する方法がわかりません。