迫于需求,有时候我们需要在一个线程中写上一个死循环,那么问题来了:当线程启动开始运行时,我们如何有效的结束该死循环,这里给大家总结如下几种方式:

方式一:线程中循环条件为线程全局变量

文件1:

public class TestThread extends Thread{boolean isStop = true;public void stopThread(){isStop = false;}@Overridepublic void run() {while(isStop){System.out.println("线程正在运行...");}System.err.println("线程已停止运行...");}
}

文件2:

public class Test {public static void main(String[] args) throws InterruptedException {TestThread thread = new TestThread();thread.start();Thread.sleep(2000);thread.stopThread();}
}

方式二:线程中循环条件使用isInterrupted方法

文件1:

public class TestThread extends Thread {public void run() {while (!Thread.currentThread().isInterrupted()) {System.out.println("线程正在运行...");}System.err.println("线程已停止运行...");}
}

文件2:

public class Test{public static void main(String args[]) throws Exception {TestThread thread = new TestThread();thread.start();Thread.sleep(1000);thread.interrupt();// 发出中断请求}
}

方式三:在循环体中写一行出现异常的代码(不可取)

文件1:

public class TestThread extends Thread {@Overridepublic void run() {try {while (true) {System.out.println("线程正在运行...");Thread.sleep(1000);//不能缺少}} catch (InterruptedException e) {e.printStackTrace();}System.err.println("线程已停止运行...");}
}

文件2:

public class Test {public static void main(String[] args) throws InterruptedException {TestThread thread = new TestThread();thread.start();Thread.sleep(2000);thread.interrupt();}
}

终结者:终止线程循环的方式相关推荐

  1. Java的知识点30——线程的优先级、终止线程的典型方式、获取线程基本信息的方法

    线程的优先级  1-10 1. NORM_PRIORITY  5 默认  2. MIN_PRIORITY  1  3. MAX_PRIORITY  10 注意:优先级低只是意味着获得调度的概率低.并不 ...

  2. 终止线程 4 种方式

    1.正常运行结束 程序运行结束,线程自动结束. 2.使用退出标志退出线程 一般 run()方法执行完,线程就会正常结束,然而,常常有些线程是伺服线程.它们需要长时间的运行,只有在外部某些条件满足的情况 ...

  3. 快点来学吧!java保证线程安全的方式

    JAVA基础 JAVA异常分类及处理 异常分类 异常的处理方式 Throw和throws的区别 JAVA反射 动态语言 反射机制概念 (运行状态中知道类所有的属性和方法) Java反射API 反射使用 ...

  4. jar 退出run_Java终止线程的三种方式

    停止一个线程通常意味着在线程处理任务完成之前停掉正在做的操作,也就是放弃当前的操作. 在 Java 中有以下 3 种方法可以终止正在运行的线程: 使用退出标志,使线程正常退出,也就是当 run() 方 ...

  5. pyqt stop停止线程_面试阿里,字节跳动,腾讯90%都会被问到如何终止线程?有几种方式?你都知道吗?...

    在 Java 中有以下 3 种方法可以终止正在运行的线程: 使用退出标志,使线程正常退出,也就是当 run() 方法完成后线程终止: 使用 stop() 方法强行终止线程,但是不推荐使用这个方法,因为 ...

  6. Java终止线程的三种方式

    停止一个线程通常意味着在线程处理任务完成之前停掉正在做的操作,也就是放弃当前的操作. 在 Java 中有以下 3 种方法可以终止正在运行的线程: 使用退出标志,使线程正常退出,也就是当 run() 方 ...

  7. Java 多线程 终止线程的4中方式

    多线程 上篇是线程的生命周期,那这次来分享下,终止线程的几种方式. 文章目录 多线程 1.正常运行结束 2. 使用退出标志退出线程 3.Interrupt方法结束线程 4.stop()方法终止线程(不 ...

  8. pyqt stop停止线程_面试官:如何终止线程?有几种方式?

    在 Java 中有以下 3 种方法可以终止正在运行的线程: 使用退出标志,使线程正常退出,也就是当 run() 方法完成后线程终止: 使用 stop() 方法强行终止线程,但是不推荐使用这个方法,因为 ...

  9. JDK中的Timer和TimerTask详解 目录结构: Timer和TimerTask 一个Timer调度的例子 如何终止Timer线程 关于cancle方式终止线程 反复执行一个任务 sche

    JDK中的Timer和TimerTask详解 目录结构: Timer和TimerTask 一个Timer调度的例子 如何终止Timer线程 关于cancle方式终止线程 反复执行一个任务 schedu ...

  10. 详解java中Thread类,线程和进程的基本区别,多线程的好处,线程的五个生命周期,主线程和IDEA创建的Monitor Ctrl-Break守护线程;优雅地终止线程。死锁的产生

    线程:CPU调度的最小单位:线程共享堆内存和方法区,但各自享有栈空间.进程:CPU分配资源的最小单位. 为什么需要多线程:①避免其中一个模块阻塞造成系统假死:②程序异步处理(交替执行),提高程序执行效 ...

最新文章

  1. 图像降噪算法——低秩聚类:WNNM算法
  2. Libra教程之:Transaction的生命周期
  3. Your STATICFILES_DIRS setting is not a tuple or list
  4. Linux: 两个USB摄像头的数据采集问题
  5. 分享GitHub上一些嵌入式相关的高星开源项目
  6. 无中生有!没有视觉信号的视觉语音增强
  7. java用linkedlist编写学生类_【S2第二学期-使用Java实现面向对象编程】Java平台的集合类(List、ArrayList、LinkedListMap、HashMap...
  8. linux centos网卡配置,centos网卡配置详解
  9. Rust: codewars 的Count of positives / sum of negatives
  10. 【图像处理】基于matlab GUI视频处理系统【含Matlab源码 756期】
  11. 前端a链接读取txt文件导出下载_HTML页面点击下载文件的两种实现方法
  12. 学习 react-native-sqlite-storage 案例
  13. 蓝色音箱改装电源_JBL便携/无线音箱排行榜,JBL便携/无线音箱十大排名推荐
  14. 万丈高楼平地起 AI帮你做自己
  15. 7-25朋友圈(C语言版)
  16. Unity3d LOD 使用以及 Bias精度设置
  17. 1.5 DICOM图像CT值转RGB
  18. 【毕业设计】深度学习手势识别检测系统 - python
  19. C语言程序设计(第三版)何钦铭著 习题4-6
  20. python怎么打印图片_Python:使用字符打印照片

热门文章

  1. Bluebird-Collections
  2. jdbc预编译插入数据操作
  3. Quartz CronTrigger最完整配置说明
  4. 测试工程师面试准备之----测试基础
  5. 【python】-- 队列(Queue)、生产者消费者模型
  6. 《HTML5 2D游戏编程核心技术》——第3章,第3.8节绘制动画帧
  7. C#编程总结(十一)数字证书
  8. Get Intellisense for .axml files in Visual Studio
  9. IS-IS hello 包结构及邻接关系的建立
  10. 我的儿时理想—让世界没有乞丐