当前位置 : 主页 > 编程语言 > c++ >

java多线程-守护线程的使用

来源:互联网 收集:自由互联 发布时间:2021-07-03
守护线程并非虚拟机内部可以提供,用户也可以自行的设定守护线程 理解:守护线程:在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 任何一个守护线程都是整个JVM中所
守护线程并非虚拟机内部可以提供,用户也可以自行的设定守护线程
理解:
守护线程:在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 
任何一个守护线程都是整个JVM中所有非守护线程的保姆:
只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作
需要注意:
(1) thread.setDaemon(true)必须在thread.start()之前设置,否则会跑出一个IllegalThreadStateException异常。你不能把正在运行的常规线程设置为守护线程。
(2) 在Daemon线程中产生的新线程也是Daemon的。
(3) 不要认为所有的应用都可以分配给Daemon来进行服务,比如读写操作或者计算逻辑。


package cn.mym.thread;

/**
 * 
 *

Title:GuardThread

*

Description:守护线程测试

*

Company:

*@author mym *@date 2017-7-10下午10:12:24 *@version */ class GuardThread extends Thread{ @Override public synchronized void start() { super.setDaemon(true); super.start(); } @Override public void run() { int i = 0; while(i < 10){ try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } System.out.print("hello"); i++; } } } public class Test{ public static void main(String[] args) { GuardThread guardThread1 = new GuardThread(); GuardThread guardThread2 = new GuardThread(); guardThread1.start(); //定义main方法中的线程操作 int j = 0; while(j<10){ try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } System.out.print("mym"); j++; } } }
网友评论