gpt4 book ai didi

java - 通过线程名称杀死一个java线程

转载 作者:行者123 更新时间:2023-12-01 19:26:23 24 4
gpt4 key购买 nike

我有一个每 15 秒运行一次的脚本,它每次都会创建一个新线程。有时这个线程会卡住并阻塞我的程序的同步过程。现在,如果线程卡住了 20 个循环,我想终止具有特定名称的进程。这是我的代码:

public void actionPerformed(ActionEvent e) {


Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("dd-MM-yyyy HH:mm:ss");
System.out.println(ft.format(dNow));

ThreadGroup currentGroup = Thread.currentThread().getThreadGroup();
int noThreads = currentGroup.activeCount();
Thread[] lstThreads = new Thread[noThreads];
currentGroup.enumerate(lstThreads);
boolean loopthreadfound = false;
for (int i = 0; i < noThreads; i++){
try{
if (lstThreads[i].getName() == "loopthread"){loopthreadfound = true;}
}catch(Exception e1){System.out.println(e1);}
}

if (loopthreadfound == false){
loopthreadcounter = 0;
//Starten in nieuwe thread
Thread loopthread = new Thread() {

public void run() {

try {
checkonoffline();
checkDBupdates();
} catch (JSONException | SQLException | IOException e1) {
System.out.println(e1);
}
}

};

loopthread.setName("loopthread");
loopthread.start();

}else{

loopthreadcounter++;
System.out.println("Loopthread already running... counter: " + loopthreadcounter);

if (loopthreadcounter > 20){

// HERE I WANT TO KILL THE THREAD "loopthread "

}
}

}

最佳答案

一般来说,线程名称不是唯一的。如果您关联 StringThread ,并且该字符串标识您要停止的线程,请自行跟踪它,而不是将其视为线程名称。

即创建一个Map<String, Thread> 。稍后,您可以通过“名称”从映射中获取正确的线程并终止它。

请注意stop()已弃用。您应该找到正确的方法来终止、中断或以其他方式终止被阻止的操作。

关于java - 通过线程名称杀死一个java线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59309998/

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