2 つのスレッドを次々と開始しています。最初のスレッドは入力からループを読み取り、もう 1 つのスレッドはループ内の条件をチェックして、別のスレッドに割り込みを送信します。
問題は、私が最初に開始した2つのスレッドが、もう一方を停止させないことです。読み込みを開始すると、終了するまで他のスレッドを実行しません。他のスレッドを開始すると、ループ内の条件がチェックされ、条件が真になってループから出るまでコードが進みません。それを行う正しい方法は何ですか?以下のサンプルコード:
スレッド 1)
public class InterruptionThread extends Thread {
public void run() {
while (condition not true) {
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (condition true) {
do some work
return;
}
}
}
スレッド 2)
public class ReadingThread extends Thread{
public void run() {
int input;
while (true) {
try {
input = stdInput.read();
} catch (IOException e) {
e.printStackTrace();
return;
}
System.out.print((char) input);
}
}
}