栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Java中停止线程?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Java中停止线程?

一般而言,执行此操作的方法是让每个其他线程定期检查标志。后台线程经常循环,等待工作-
每次循环时,它们只需要检查标志即可。如果他们正在使用

Object.wait()
或类似的东西被告知还有更多工作要做,则应使用相同的通知来指示线程也应停止。(不要只是旋转,直到您停止-
这会占用CPU。不要只是使用sleep-这会延迟终止。)

这样一来,所有线程便可以干净地终止,从而适当地释放资源。IMO

interrupt()
和其他选项(例如和不赞成使用的
destroy()
方法)很难进行正确控制。(中断线程比硬终止线程更好,但是线程有其自身的一系列问题-
例如,无论如何,仅在某些点处理中断。)

编辑:在代码中,它将类似于:

// Client prefor (Task task : tasks) {  task.stop();}// Threading prepublic abstract class Task implements Runnable {  private volatile boolean stopped = false;  public void stop() {    stopped = true;  }  protected boolean shouldStop() {    return stopped;  }  public abstract void run();}

然后,您的任务将成为子类

Task
。如果您希望该
stop()
方法还可以通知监视器,则需要使其稍微复杂一些,但这是基本思想。

示例任务:

public class Sometask extends Task {  public void run() {    while (!shouldStop()) {      // Do work    }  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/497180.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号