gpt4 book ai didi

java - 使用中断方法终止线程

转载 作者:行者123 更新时间:2023-11-28 22:17:11 25 4
gpt4 key购买 nike

我有一个运行文件解析任务的线程。它被设置为一个守护线程,从 tomcat 启动到关闭执行它的任务在后台运行。

我希望在中断和服务器关闭时处理线程终止。我想知道我的做法是否正确。

class LoadingModule{             // Thread is started from here
threadsStartMethod() {
Thread t = new Thread(FileParseTask);
t.setDaemon(true);
t.start();
}
}

Class FileParseTask implements Runnable {

@Override
public void run() {
try {
while(!Thread.currentThread.isInterrupted) {
// poll for file creation
// parse and store
}
} catch(Exception exit) {
log.error(message);
Thread.currentThread.interrupt();
}
}
}

这会在所有情况下干净地退出线程吗?

最佳答案

这取决于循环内的代码。如果循环内的代码捕获中断的异常并恢复,您将永远看不到它。通用异常“exit”也隐藏了其他异常。更改代码,以便您知道是什么击中了您。

我会做以下事情

Class FileParseTask implements Runnable {

@Override
public void run() {

while(!Thread.currentThread.isInterrupted) {
try {
// poll for file creation
// parse and store
} catch(Exception exit) {
if (InterruptedException)
break;
else{
//
}
log.error(message);
}
}
}
}

这对我来说有多达 2K 个线程没有问题

关于java - 使用中断方法终止线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41898129/

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