Java 多线程的线程中断
2018-02-07 21:51
423 查看
标记 停止线程
class StopRunnable implements Runnable{ public boolean isOver = false; @Override public void run() { // 利用死循环方法是测试能不能停止线程 while (!Thread.currentThread().isInterrupted()) { try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "...run"); } } } public static void main(String[] args) { StopRunnable stopRunnable = new StopRunnable(); Thread t = new Thread(stopRunnable); t.start(); // 给t线程有执行时间 try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 中断线程 t.interrupt(); // stopRunnable.isOver = true; System.out.println("利用标记停止线程"); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("主线程结束"); }
测试结果:不能结束子线程 interrupt()方法 设置 isInterrupted 布尔值 如果线程中 有wait()等待 或者 sleep 休眠 这时调用interrupt方法 会抛出一个异常InterruptedException 并且清除中断状态 如果线程中没有等待 或 休眠 这时调用interrupt方法 会设置中断状态(true/false的改变)
Interrupt
线程的中断状态
线程等待 放弃了cpu的执行资源 interrupt 方法 尽量不要使用 如果要停止线程 直接使用 标记法 只有遇到了等待状态 时 可以使用该方法 强行清除该方法
class InterruptThread extends Thread{ public boolean isOver = false; @Override public synchronized void run() { while (true) { try { /* * 线程1进来 带着锁 遇到wait方法 * 放弃cpu的执行权 但是锁会还回去 * 线程2进来了 又遇到等待 * 相当于两个线程 都在等待 * 进入冷冻(中断)状态 * 解决冷冻(中断)状态 * 调用interrupt方法 清除该状态 * 注意wait方法 必须用锁对象去调用 */ wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "...run" ); } } }
相关文章推荐
- Java多线程与并发(四)之中断线程
- Java多线程-通过线程的中断来深入学习interrupt方法,Volatile关键字
- java技术深入(一)——java多线程(二)——线程中断
- java多线程并发(三)(中断线程)
- Java多线程(四):线程中断、线程让步、线程睡眠、线程合并
- java多线程-概念&创建启动&中断&守护线程&优先级&线程状态(多线程编程之一)
- 【Java多线程】-线程中断
- JAVA多线程——线程的中断
- Java多线程——如何中断线程
- java多线程--中断线程
- Java多线程(二)——线程中断interrupt
- java 多线程学习笔记之 线程中断
- java多线程--线程中断
- Java多线程编程学习笔记之一:线程中断(含代码)
- Java 多线程 - 线程 - 中断 - 3
- Java之多线程interrupt中断线程的三种方法
- Java 多线程:线程中断
- java 多线程 中断线程interrupt 研究
- Java 多线程 - 线程 - 中断 - 2
- Java多线程之线程中断