Java 简单线程串联运行?(第二个线程直到第一个线程停止才运行)
我正在一个接一个地开始两个线程。 第一个线程在循环中读取输入,另一个线程检查循环中的某些条件以 向对方发送了一个中断 问题是,这两个线程中的任何一个我先启动,它都不会让另一个停止。 如果我开始读入,则在另一个线程完成之前,不会运行该线程;如果我启动另一个线程,则该线程正在检查循环中的条件,并且在条件为真并退出循环之前,它不会在代码中向前移动。 正确的方法是什么? 示例代码如下: 线程1) 线程2)Java 简单线程串联运行?(第二个线程直到第一个线程停止才运行),java,multithreading,Java,Multithreading,我正在一个接一个地开始两个线程。 第一个线程在循环中读取输入,另一个线程检查循环中的某些条件以 向对方发送了一个中断 问题是,这两个线程中的任何一个我先启动,它都不会让另一个停止。 如果我开始读入,则在另一个线程完成之前,不会运行该线程;如果我启动另一个线程,则该线程正在检查循环中的条件,并且在条件为真并退出循环之前,它不会在代码中向前移动。 正确的方法是什么? 示例代码如下: 线程1) 线程2) 这听起来好像您没有以正确的方式启动线程 使用start()方法来启动线程,而不是run()方法(实
这听起来好像您没有以正确的方式启动线程 使用
start()
方法来启动线程,而不是run()
方法(实际上并不启动线程)
我认为你的问题属于生产者-消费者问题类型。 因此,我建议您使用BlockingQueue
也不是直接处理线程;如果您使用Executor框架,这将很容易;这样,线程管理将变得非常简单。至少您可以使代码可读:-(如何启动线程?如何启动线程?能否向我们展示此代码?您应该调用
start()
,而不是run())
直接阅读。阅读有关线程的初学者教程。您应该了解线程状态和转换。
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;
}
}
}
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);
}
}
}
new InterruptionThread().start();
new ReadingThread().start();