我一个接一个地开始两个线程。第一个线程从输入循环中读取,另一个线程检查循环中的某些条件以向另一个线程发送中断。
问题是我首先开始的两个线程中的任何线程都不会让另一个停止。如果我开始阅读永远不会运行另一个线程,直到它完成,如果我启动另一个线程正在检查循环中的条件,它不会在代码中向前移动,直到条件为真并退出循环。正确的方法是什么?下面的示例代码:
线程 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);
}
}
}