首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹簧线程中断

弹簧线程中断
EN

Stack Overflow用户
提问于 2019-07-26 17:27:54
回答 1查看 804关注 0票数 1

我有一个简单的弹簧控制器,它等待一些动作完成。假设它看起来如下所示:

代码语言:javascript
复制
@GetMapping("/wait")
public void waitForFinish() throws InterruptedException {
    while (!allJobsAreFinished()) {
        Thread.sleep(5000);
    }
}

现在,出于某种原因,我想在一个单独的请求中中断这个线程。为此,我将正在运行的线程保存到一个映射中,并在一个单独的方法中对其调用.interrupt()

代码语言:javascript
复制
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创建的线程是个好主意吗?如果我中断了Spring线程,会出什么问题?或者更好的方法是创建ExecutorService,向它提交我的任务,然后通过Future中断它们

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-26 17:37:28

不要中断你不知道后果的线程。

它可以为你创建的线程,你启动的线程,并且你知道副作用是什么。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57217038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档