博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Java中如何正确地终止一个线程
阅读量:5756 次
发布时间:2019-06-18

本文共 1612 字,大约阅读时间需要 5 分钟。

1.使用Thread.stop()?

   极力不推荐此方式,此函数不安全且已废弃,具体可参考Java API文档

2.设置终止标识,例如:

import static java.lang.System.out;public class TestThread extends Thread{    private boolean terminationFlag;    public void run()    {        for (int i = 0; i != 10000000; ++i)        {            if (terminationFlag)                break;            out.println(i + 1);        }    }    public void terminate()    {        terminationFlag = true;    }}

3.使用Thread.interrupt()

   interrupt()函数本身并不能终止线程,需要做一些处理方可终止线程

   ①若线程任务中包含Object.wait()、Thread.sleep(long)等可能引发InterruptedException的函数,则在调用interrupt()后会抛出InterruptedException

import static java.lang.System.out;import java.util.logging.Logger;import java.util.logging.Level;public class TestThread extends Thread{    private static final Logger LOGGER = Logger.getLogger("TestThread");    public void run()    {        for (int i = 0; i != 10000000; ++i)        {            try            {                Thread.sleep(100);                out.println(i + 1);            }            catch (InterruptedException ex)            {                LOGGER.log(Level.SEVERE, null, ex);                break;  //执行break后退出循环,run()也将执行完毕            }        }    }}

②若线程任务中不包含可能引发InterruptedException的函数,则可将Thread.isInterrupted()的返回值作为终止标识

import static java.lang.System.out;public class TestThread extends Thread{    public void run()    {        for (int i = 0; i != 10000000; ++i)        {            if (isInterrupted())                break;            out.println(i + 1);        }        out.println("TestThread.run() will be finished");    }}

 

转载于:https://www.cnblogs.com/buyishi/p/9159157.html

你可能感兴趣的文章
关于WechatApp学习总结
查看>>
Linux常见命令(二)
查看>>
PyCharm切换解释器
查看>>
jmp far ptr s所对应的机器码
查看>>
css详解1
查看>>
【转载】Presentation at from Yoshua Bengio
查看>>
MySQL类型转换
查看>>
HashSet HashMap 源码阅读笔记
查看>>
变量声明提升1
查看>>
轻量级的Java 开发框架 Spring
查看>>
JS之路——浏览器window对象
查看>>
Chrome教程(二)使用ChromeDevTools命令菜单运行命令
查看>>
数据结构及算法基础--快速排序(Quick Sort)(二)优化问题
查看>>
你对position的了解到底有多少?
查看>>
随笔2013/2/19
查看>>
Windows Phone的Silverlight Toolkit 安装及其使用
查看>>
DBS:同学录
查看>>
Mysql备份系列(1)--备份方案总结性梳理
查看>>
[CareerCup] 1.6 Rotate Image 翻转图像
查看>>
jQuery中$.fn的用法示例介绍
查看>>