技术文章 > java >  java基础 > 正文

java守护线程应用

小妮浅浅

在java的线程中,除了我们熟知的线程外,有一种特殊的线程,一直在为其他线程提供服务,这就是守护线程。从它的意思上来看,就是为了守护其他的线程而存在的,使用上用到了我们之前所学的Thead类。下面我们就守护线程的概念、使用事项及继承父线程的实例为大家带来介绍。

1.守护线程概念

专门用于服务其他的线程,如果其他的线程(即用户自定义线程)都执行完毕,连main线程也执行完毕,那么jvm就会退出(即停止运行)。典型的守护线程就是垃圾回收线程。可以通过调用Thead类的setDaemon(true)方法设置当前的线程为守护线程。

2.守护线程使用事项

(1)setDaemon(true)必须在start()方法前执行,否则会抛IllegalThreadStateException异常;

(2)在守护线程中产生的新线程也是守护线程 ;

(3)不是所有的任务都可以分配给守护线程来执行,比如读写操作或者计算逻辑。

public class DaemonThread extends Thread {
 
    private int i = 0;
 
    @Override
    public void run() {
        super.run();
        try {
            while (true){
                i++;
                System.out.println("i = " + i);
                Thread.sleep(1000);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
 
 
public class DaemonThread extends Thread {
 
    private int i = 0;
 
    @Override
    public void run() {
        super.run();
        try {
            while (true){
                i++;
                System.out.println("i = " + i);
                Thread.sleep(1000);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

3.守护线程属性继承父线程实例

直接看 Thread 源代码构造方法里面就可以知道,代码如下:

private Thread(ThreadGroup g, Runnable target, String name,
 
long stackSize, AccessControlContext acc,
 
boolean inheritThreadLocals) {
 
...省略一堆代码
 
this.daemon = parent.isDaemon();
 
...省略一堆代码
 
}

以上就是java中守护线程的应用,相信大家已经对这种服务于其他线程的方法有所了解。主要依靠于Thead类的调用,对这方面不熟悉的可以找下有关资料。

免费视频教程
本文原创发布python学习网,转载请注明出处,感谢您的尊重!
相关文章
 java线程创建的几种方式
 java线程的状态有哪些
 java线程和进程的关系有哪些
 java线程安全的解决
 线程在java中的通信
 thread类在java线程中的使用
相关视频章节
 网络爬虫
 云端部署Web应用程序视频
 Web应用框架Flask和文件模板
 Web应用程序开发概述
 继承和多态
作者信息

小妮浅浅

认证0级讲师

最近文章
java编译命令是什么517
java的jdk是什么407
java Wrapper类的使用806
推荐视频
视频教程分类