首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过中断线程终止线程- java 6

通过中断线程终止线程- java 6
EN

Stack Overflow用户
提问于 2014-01-29 16:16:00
回答 1查看 54关注 0票数 0

我一直在处理一个应用程序(java-6),在该应用程序中,我需要终止表单提交时的线程。应用程序处理几个请求,每个请求都有自己的“终止我”按钮,用户点击按钮,我得到线程id,我标记被中断的线程。

我曾经有一个经常被称为代码(日志)的部分,我定期检查CurrentThread是否被标记,如果是,它会抛出一个RunTimeException。这就是我过去能够终止线程的方式。不幸的是,由于重构,这个部分已经被删除了,现在我无法找到一个足够频繁地检查currentThread是否被标记的合适位置。

另一种方法是以某种方式“强迫”线程定期检查自己的状态(如果被标记为中断,则抛出异常)。如果每个线程都是我通过扩展Thread或实现Runnable来编写的,那就相当容易了,但事实并非如此。有没有办法(也许在Java 7中)来执行“正常”线程?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-29 16:30:29

Java在设计上是协作的(除非您想使用不推荐的stop()方法-这是出于很好的理由而被废弃的)。

所以,如果一条线在死亡中不合作,你就无能为力了。有几种检查中断标志并抛出InterruptedException的方法。

但是,除非您正确地处理异常(它清除了标志,如果无法处理,则需要再次设置它),否则该标志很容易丢失。

您需要更改代码以重新引入检查。如果他们不允许您更改代码,那么我就知道了一些方法(比如用构建中的固定版本替换JAR中的类文件)。但到头来,你真的必须改变来源。

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

https://stackoverflow.com/questions/21436570

复制
相关文章

相似问题

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