多线程停止/守护线程
2018-04-03 14:51
162 查看
package StopThread; public class StopThread implements Runnable{ private boolean flag = true; public void run() { // TODO Auto-generated method stub while(flag){ System.out.println(Thread.currentThread().getName()+"----run"); } } public void changeFlag(){ flag = false; } }
package StopThread; public class StopThreadDemo { /** * stop 方法已经过时, * * 停止方法:run方法结束 * 开启多线程运行,运行代码通常是循环结构。 * * 只要控制住循环 ,就可以让run方法结束,即线程结束。 */ public static void main(String[] args) { // TODO Auto-generated method stub StopThread stopThread = new StopThread(); Thread t1 = new Thread(stopThread); Thread t2 = new Thread(stopThread); t1.start(); t2.start(); int num = 0; while(true){ if (num++ == 60){ stopThread.changeFlag(); break; } System.out.println(Thread.currentThread().getName()+"....."+num); } } }
=================== 特殊情况 =====================
package StopThread; public class StopThread implements Runnable{ private boolean flag = true; public synchronized void run() { // TODO Auto-generated method stub while(flag){ try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block System.out.println(Thread.currentThread().getName()+"----Exception "); flag = false; } System.out.println(Thread.currentThread().getName()+"----run"); } } // public void changeFlag(){ // flag = false; // } }
package StopThread; public class StopThreadDemo { /** * stop 方法已经过时, * * 停止方法:run方法结束 * 开启多线程运行,运行代码通常是循环结构。 * * 只要控制住循环 ,就可以让run方法结束,即线程结束。 * ============================================================= * * * 特殊情况,当线程处于冻结状态就不会读取标记,线程就不会结束。 * 当没有指定的方式让冻结线程结束时,需要对冻结的线程进行清除。 * 强制让线程恢复到运行状态中, * 就可以操作标记,让线程结束。 * Thread类中提供了: interrupt(); * */ public static void main(String[] args) { // TODO Auto-generated method stub StopThread stopThread = new StopThread(); Thread t1 = new Thread(stopThread); Thread t2 = new Thread(stopThread); t1.start(); t2.start(); int num = 0; while(true){ if (num++ == 60){ t1.interrupt(); t2.interrupt(); // stopThread.changeFlag(); break; } System.out.println(Thread.currentThread().getName()+"....."+num); } } }
=================== 守护线程 ====================
package StopThread; public class StopThread implements Runnable{ private boolean flag = true; public synchronized void run() { // TODO Auto-generated method stub while(flag){ try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block System.out.println(Thread.currentThread().getName()+"----Exception "); flag = false; } System.out.println(Thread.currentThread().getName()+"----run"); } } // public void changeFlag(){ // flag = false; // } }
package StopThread; public class StopThreadDemo { /** * stop 方法已经过时, * * 停止方法:run方法结束 * 开启多线程运行,运行代码通常是循环结构。 * * 只要控制住循环 ,就可以让run方法结束,即线程结束。 * ============================================================= * * * 特殊情况,当线程处于冻结状态就不会读取标记,线程就不会结束。 * 当没有指定的方式让冻结线程结束时,需要对冻结的线程进行清除。 * 强制让线程恢复到运行状态中, * 就可以操作标记,让线程结束。 * Thread类中提供了: interrupt(); * */ public static void main(String[] args) { // TODO Auto-generated method stub StopThread stopThread 4000 = new StopThread(); Thread t1 = new Thread(stopThread); Thread t2 = new Thread(stopThread); /** * 守护线程 * 1. 线程启动前设为true * 2. 当前台线程(主线程)结束了,守护线程就结束了,JVM虚拟机退出。 */ t1.setDaemon(true); t2.setDaemon(true); t1.start(); t2.start(); int num = 0; while(true){ if (num++ == 60){ // t1.interrupt(); // t2.interrupt(); // stopThread.changeFlag(); break; } System.out.println(Thread.currentThread().getName()+"....."+num); } } }
相关文章推荐
- 黑马程序员---多线程之停止线程、守护线程、Join方法浅谈
- JAVA之旅(十五)——多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止
- JAVA之旅(十五)——多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止
- 多线程---其他方法 停止线程、守护线程、join方法
- 黑马程序员------多线程(No.3)(停止线程、守护线程、Join方法、优先级&yield方法、总结)
- java基础学习__多线程(停止线程,守护线程,join方法)
- 32-多线程(wait和sleep的区别)1 2 33-多线程(停止线程方式-定义标记) 35-多线程(守护线程-setDaemon).1 2
- 07_多线程停止与守护线程
- 【Java 语言】Java 多线程 一 ( 线程基础 : 线程启动 | 线程停止 | 线程暂停 | 线程优先级 | 守护线程)
- 多线程——停止和守护线程
- 黑马程序员-多线程:停止,守护线程,join方法
- 15.停止线程 守护线程 join() yield()
- 多线程之基础篇06:守护线程
- 多线程--线程同步、死锁、守护线程、多线程下载
- 多线程基础四(三)、yield方法、线程优先级以及守护线程
- python 多线程中的守护线程与join的用法
- Java-----多线程小知识点:join()方法和守护线程
- java多线程学习之停止休眠中的线程问题
- python的多线程和守护线程
- JAVA多线程编程——1.9线程让步-1.11守护线程