だから私は他のすべてのスレッドを担当する私のMainThreadクラスを持っています(作成、停止、監視)
public class MainThread implements Runnable {
public static volatile boolean keepRunning = true;
public void run(){
//some code..
while(keepRunning){
//here i am creating threads for my Wired class (explaining below)
//that are stored in a hashmap
Wired wiredInterface = new Wired(s,defaultSleepTime,c,max,percent);
Thread t1 = new Thread(wiredInterface);
t1.start();
}
私のコードのずっと下に、スレッドt1を停止する必要がある場合があります。
私の有線クラス:
public class Wired implements Runnable {
private static volatile boolean keepRunning = true;
public void run(){
while(keepRunning){
//code
try{
Thread.sleep(((k - i + 1)*defaultTime) - DT); //just to show that this thread sleeps periodically. doesnt affect the question
}catch(InterruptedException e){e.printStackTrace();}
}
}
私のWiredクラスには、揮発性フラグを変更するためのこのメソッドがあります。
public static void stopRunning(){
keepRunning = false;
}
私の質問は..停止したい特定のスレッドのMainThreadからメソッドstopRunningにアクセスするにはどうすればよいですか?Thread.interrupt()は、解決策としては機能しません。
私はこの主題に関して多くの同様の質問を見てきましたが、私の場合に適したものを見つけられませんでした。私が何かを逃した場合は申し訳ありませんこのコードは私の実際のコードを過度に単純化したものです