gpt4 book ai didi

java - 当用户命令停止时,如何在 Java 命令提示符中停止线程?

转载 作者:行者123 更新时间:2023-12-01 05:04:01 25 4
gpt4 key购买 nike

基本上,我有一个在控制台中运行的Java线程,它将无限地运行,除非用户输入“halt”,否则程序应该停止线程并停止控制台。

这是线程的 set_interval 部分的样子(用户可以输入他们想要的线程之间的间隔时间):

public void set_interval(int mins, int secs) {
time = (mins * 60000) + (1000 * secs);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
try {
count += counter;
String name = getName();
Date date = new Date();
System.out.print("\n" + "Thread:" + name + " " + date + " - counter: " + count);
Thread.sleep(time);
} catch(InterruptedException e){
System.out.print(e);
}
}, 0, time);
}

这是 main 的样子:}else if (checkLine.equals("halt")){
线程测试 = new Thread("名称");
测试.中断();
休息;
}

我看的每个地方都说要使用中断,但这个中断似乎不起作用。有人有什么想法吗?还是我只是忽略了一些小细节?我有可能需要使用套接字来解决这个问题。

最佳答案

中断只会中断你中断的线程。在您的代码中,您创建了您中断的线程,但不会影响其他线程。

您可以中断计时器中的线程,除非您记录中断,但继续执行,就好像它没有发生一样,即它不会停止线程。

我会为此使用 ScheduleExecutorService,因为它支持 shutdownNow(),它会停止线程池并中断所有正在运行的任务。

关于java - 当用户命令停止时,如何在 Java 命令提示符中停止线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12969694/

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