gpt4 book ai didi

java - 简单线程串联运行? (第二个线程在第一个线程停止之前不会运行)

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:55 25 4
gpt4 key购买 nike

我正在一个接一个地启动两个线程。第一个线程从输入循环读取,另一个线程检查循环中的某些条件以向对方发送中断。

问题是我首先启动的两个线程中的任何一个都不会让另一个停止。如果我开始读入,则在它完成之前永远不会运行另一个线程,如果我启动另一个线程,则它正在检查循环中的条件,并且它不会在代码中前进,直到条件为真并退出循环。正确的做法是什么?示例代码如下:

线程 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);
}
}
}

最佳答案

这听起来好像您没有以正确的方式启动线程。

使用 start() 方法启动线程,不是 run() 方法(它实际上并不启动线程) .

new InterruptionThread().start();
new ReadingThread().start();

关于java - 简单线程串联运行? (第二个线程在第一个线程停止之前不会运行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13489039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com