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

如何在Java中中断/停止线程?

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

如何在Java中中断/停止线程?

确实没有必要使用

volatile
标志。相反,只需使用来查询线程的状态
isInterrupted()
。另外,为什么还要将
Scan
线程对象包装在另一个线程对象中?对我来说,这似乎完全没有必要。

这是你应该做的

public class Middleware {    private Scan scan;    public void read() {        try { // do stuff scan = new Scan(); scan.start();        } catch (UnknownHostException ex) { // handle exception        } catch (IOException ex) { // handle exception        }    }    private class Scan extends Thread {        @Override        public void run() { while (!Thread.currentThread().isInterrupted()) {     try {         // my pre goes here     } catch (IOException ex) {         Thread.currentThread().interrupt();     } }        }    }    public void stop() {        if(scan != null){ scan.interrupt();        }    }}

这是一个例子。另外,我不建议扩展

Thread

通常,线程在被中断时终止。那么,为什么不使用本地布尔值呢?试试isInterrupted():

   Thread t = new Thread(new Runnable(){        @Override        public void run() { while(!Thread.currentThread().isInterrupted()){     // do stuff          }}});    t.start();    // Sleep a second, and then interrupt    try {        Thread.sleep(1000);    } catch (InterruptedException e) {}    t.interrupt();


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

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

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