在java的线程中,除了我们熟知的线程外,有一种特殊的线程,一直在为其他线程提供服务,这就是守护线程。从它的意思上来看,就是为了守护其他的线程而存在的,使用上用到了我们之前所学的Thead类。下面我们就守护线程的概念、使用事项及继承父线程的实例为大家带来介绍。
1.守护线程概念
专门用于服务其他的线程,如果其他的线程(即用户自定义线程)都执行完毕,连main线程也执行完毕,那么jvm就会退出(即停止运行)。典型的守护线程就是垃圾回收线程。可以通过调用Thead类的setDaemon(true)方法设置当前的线程为守护线程。
2.守护线程使用事项
(1)setDaemon(true)必须在start()方法前执行,否则会抛IllegalThreadStateException异常;
(2)在守护线程中产生的新线程也是守护线程 ;
(3)不是所有的任务都可以分配给守护线程来执行,比如读写操作或者计算逻辑。
publicclassDaemonThreadextendsThread{
privateinti=0;
@Override
publicvoidrun(){
super.run();
try{
while(true){
i++;
System.out.println("i="+i);
Thread.sleep(1000);
}
}catch(Exceptione){
e.printStackTrace();
}
}
}
publicclassDaemonThreadextendsThread{
privateinti=0;
@Override
publicvoidrun(){
super.run();
try{
while(true){
i++;
System.out.println("i="+i);
Thread.sleep(1000);
}
}catch(Exceptione){
e.printStackTrace();
}
}
}
3.守护线程属性继承父线程实例
直接看 Thread 源代码构造方法里面就可以知道,代码如下:
privateThread(ThreadGroupg,Runnabletarget,Stringname,
longstackSize,AccessControlContextacc,
booleaninheritThreadLocals){
...省略一堆代码
this.daemon=parent.isDaemon();
...省略一堆代码
}
原文来自:https://www.py.cn
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END



















































暂无评论内容