1. 程式人生 > 其它 >前端頁面Ajax控制後端執行緒(Thread)執行

前端頁面Ajax控制後端執行緒(Thread)執行

1、後端生成執行緒 

JSONObject redisJson = new JSONObject();
Thread th = new Thread(
() -> {
...
while() {
...
}
...
}
);
th.start();
//以下內容為重點:需借用 redis 儲存當前執行緒名
redisJson .put("thread_name",th.getName())
redisService.setValue(taskKey, StringUtils.toStringTrim(redisJson));

return redisJson

2、前端呼叫Ajax

JSONObject redisJson = JSONObject.parseObject(redisService.getValue("ekg:meta:zcwj:extractparagraphfile:" + taskId));
String th_name = StringUtils.toStringTrim(redisJson.get("thread"));
ThreadGroup currentGroup = Thread.currentThread().getThreadGroup();
int noThreads = currentGroup.activeCount();
Thread[] lstThreads = new Thread[noThreads];
currentGroup.enumerate(lstThreads);
System.err.println("現有執行緒數" + noThreads);
for (int i = 0; i < noThreads; i++) {
String nm = lstThreads[i].getName();
System.err.println("執行緒號:" + i + " = " + nm);
if (nm.equals(th_name)) {
System.err.println("刪除執行緒:" + i + " = " + th_name);
lstThreads[i].interrupt();
lstThreads[i].stop();
}
}
redisService.removeKey("ekg:meta:zcwj:extractparagraphfile:" + taskId);
//迴圈所有執行緒,根據執行緒名稱,關閉當前制定的執行緒