我有一個(gè)簡單的彈簧控制器,它等待完成一些動作。假設(shè)它看起來像下面這樣:@GetMapping("/wait")public void waitForFinish() throws InterruptedException { while (!allJobsAreFinished()) { Thread.sleep(5000); }}現(xiàn)在,出于某種原因,我想在一個(gè)單獨(dú)的請求中中斷這個(gè)線程。為此,我將正在運(yùn)行的線程保存到一個(gè)映射中,并在一個(gè)單獨(dú)的方法調(diào)用中.interrupt()對其進(jìn)行調(diào)用:private Map<String, Thread> runningThreads = new ConcurrentHashMap<>();@GetMapping("/wait")public void waitForFinish() throws InterruptedException { Thread currentThread = Thread.currentThread(); runningThreads.put("testId", currentThread); //... runningThreads.remove("testId");}@GetMapping("/cancel")public void cancel() { runningThreads.get("testId").interrupt();}我的問題如下:中斷 Spring 創(chuàng)建的線程是個(gè)好主意嗎?如果我中斷 Spring 線程會出什么問題?或者最好創(chuàng)建ExecutorService、提交我的任務(wù)并通過那里中斷它們Future?
1 回答

揚(yáng)帆大魚
TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
不要中斷您不知道后果的線程。
可以對您創(chuàng)建、啟動并且知道副作用是什么的線程執(zhí)行此操作。
添加回答
舉報(bào)
0/150
提交
取消