多线程——停止线程(intertupt方法setDaemon和方法的使用)
2016-08-20 15:37
316 查看
package com.qianfeng.demo01; /** * 停止线程: * 第三种方式: * 如果读不到标记怎么办? * 比如说在任务中让线程处于阻塞状态,无法执行标记,释放执行资格。 * run方法没有结束,所以线程无法停止,所以线程也没有办法退出。 * * Thread当中有一个interrupt的方法,可以使线程从阻塞状态清除,恢复到就绪状态,让线程具备执行资格。 * interrupt():中断线程。 * * InterruptedException:线程中断异常,线程在不该醒的时候醒了,就会报这个异常。 * * setDaemon(boolean on) 将该线程标记为守护线程或用户线程 * 守护线程:相当于后台线程,当程序中其他线程都已经停止时,守护线程自动停止,如果有三个线程a,b,c,把a设置为守护线程, * 他们启动时是一样的,抢夺资源时是一样的,但是结束是不一样的,当前台线程b,c结束时,a自动结束,也就是说前台线程才是 * 主要线程,守护线程的特点:具备了一定的依赖性。 * * * */ class StopRun2 implements Runnable{ private boolean flag = true; public void setFlag(boolean flag) { this.flag = flag; } @Override public synchronized void run() { while (flag) { try { this.wait(); } catch (InterruptedException e) { // e.printStackTrace(); System.out.println(Thread.currentThread().getName()+"被打断了"); } System.out.println(Thread.currentThread().getName()+".....run"); } } } public class StopThreadDemo02 { public static void main(String[] args) { StopRun2 sRun = new StopRun2(); Thread t1 = new Thread(sRun); Thread t2 = new Thread(sRun); t1.start(); t2.setDaemon(true); //把t2标记为守护线程 t2.start(); int num = 0; while (true) { if (++num==50) { sRun.setFlag(false); //清除t1和t2的冻结状态去 t1.interrupt(); // t2.interrupt(); break; } System.out.println(Thread.currentThread().getName()+".....run.."+num); } System.out.println("over"); } }
相关文章推荐
- Java线程--interrupt join yield setDaemon常用方法的使用
- 32-多线程(wait和sleep的区别)1 2 33-多线程(停止线程方式-定义标记) 35-多线程(守护线程-setDaemon).1 2
- Java多线程 小知识 守护线程(后台线程)setDaemon、join方法、优先级、yield方法
- 多线程Thread与后台线程setDaemon,使用Runnable接口创建多线程
- 多线程编程之重点--使用DSP/BIOS时选择线程类型的参考方法
- 多线程编程之重点--使用DSP/BIOS时选择线程类型的参考方法
- c#中跨线程调用windows窗体控件 .我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。
- 多线程---其他方法 停止线程、守护线程、join方法
- Java【多线程知识总结(2)】调用setDaemon(true)变成后台线程
- 多线程(线程间通信-多生产者多消费者问题-JDK1.5解决办法-范例),停止线程,线程中方法的区别,匿名内部类实现多线程,线程总结
- 后台线程与setDaemon()方法和线程的强制运行
- java个人学习笔记20(wait()和sleep()区别+停止线程+interrupt()+join()+setDaemon()+setPriority()+多线程常见写法)
- Java【多线程知识总结(2)】调用setDaemon(true)变成后台线程
- java基础学习__多线程(停止线程,守护线程,join方法)
- 第一个WPF学习例子--多线程、任务和UI线程一起使用、方法重载 c#书籍
- 多线程编程之重点--使用DSP/BIOS时选择线程类型的参考方法
- 多线程编程之重点--使用DSP/BIOS时选择线程类型的参考方法
- 黑马程序员------多线程(No.3)(停止线程、守护线程、Join方法、优先级&yield方法、总结)
- 线程调度四(setDaemon方法的使用)
- 黑马程序员-多线程:停止,守护线程,join方法