java-如果我的工作人员没有反复完成,如何停止线程?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-如果我的工作人员没有反复完成,如何停止线程?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1316字,纯文字阅读大概需要2分钟。
内容图文
![java-如果我的工作人员没有反复完成,如何停止线程?](/upload/InfoBanner/zyjiaocheng/657/00e618f9581948c29b4d63b375dbcb5a.jpg)
我已经遍历了有关停止线程的许多现有答案.我在下面复制了一段典型的代码.
public class HelloWorld {
public static void main(String[] args) throws Exception {
Thread thread = new Thread(new Runnable() {
public void run() {
try {
while (!Thread.interrupted()) {
Thread.sleep(5000);
System.out.println("Hello World!");
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
});
thread.start();
System.out.println("press any key to quit");
System.in.read();
thread.interrupt();
}
}
但是此解决方案需要在while循环代码中检查中断状态.如果我在run方法中所做的是顺序和单路径操作,那么我没有机会两次检查中断状态.例如,我想停止一个正在搜索所有磁盘内容的线程,这需要很多时间.
我该如何阻止它?
解决方法:
在长期运行的过程中,您必须要指出一些要点,如果(!keepRunning){break; }其他{做下一个目录/ file(); }.
在您的稻草人示例中,如果您要搜索磁盘,则在处理每个文件和目录以包含此检查逻辑之前,这里都有点.
如果您运行的过程确实很漫长,例如加密一个巨大的文件或传输一个非常大的文件,您仍然可以将这些标志检查嵌入到该过程中.在此示例中,您将传输字节块,在构建要发送的每个块之前,您将检查标志条件.在某些时候,所有步骤都必须分步进行,您可以在每个步骤之前先进行标志检查.除了一个带有.sleep()的人为例子或某些会永远等待某件事发生的连接逻辑之外,我想不出没有长时间运行的阶段或步骤的任何东西.
没有确切的问题,您将很难以更具体的方式回答您的问题.显示一些您实际上遇到问题的代码.
内容总结
以上是互联网集市为您收集整理的java-如果我的工作人员没有反复完成,如何停止线程?全部内容,希望文章能够帮你解决java-如果我的工作人员没有反复完成,如何停止线程?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。