java线程之用户线程与守护线程

简介: java线程之用户线程与守护线程

一、Thread类

Thread类中有一个属性daemon,表示线程是否是守护线程,默认值是false。与守护线程对应的是用户线程;

用户线程:daemon=false,有任务就执行。

守护线程:daemon=true,如果有用户线程存活就执行任务,如果没有用户线程存活,就退出;

二、用户线程示例

    public static void main(String[] args) {
        Thread thread = new Thread(() -> {
            System.out.println(Thread.currentThread().getName());
            System.out.println(Thread.currentThread().isDaemon());
            while (true){
            }
        });
        thread.start();
        Thread main = Thread.currentThread();
        System.out.println(main.getName());
        System.out.println(main.isDaemon());
    }

thread线程是用户线程,while是一个死循环,程序始终处于运行状态。

 

31行使用断点,查看thread和main线程的参数,均为用户线程

三、守护线程

    public static void main(String[] args) {
        Thread thread = new Thread(() -> {
            System.out.println(Thread.currentThread().getName());
            System.out.println(Thread.currentThread().isDaemon());
            while (true){
            }
        });
        thread.setDaemon(true);
        thread.start();
        Thread main = Thread.currentThread();
        System.out.println(main.getName());
        System.out.println(main.isDaemon());
    }

 thread线程是守护线程,虽然while是一个死循环,当用户线程main运行结束,thread随即终止。

32打断点,dubeg运行


线程setDaemon()设置必须在线程执行前运行,否则会报java.lang.IllegalThreadStateException异常。


相关文章
|
13天前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
48 0
|
25天前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
59 16
|
2月前
|
缓存 并行计算 安全
关于Java多线程详解
本文深入讲解Java多线程编程,涵盖基础概念、线程创建与管理、同步机制、并发工具类、线程池、线程安全集合、实战案例及常见问题解决方案,助你掌握高性能并发编程技巧,应对多线程开发中的挑战。
|
2月前
|
数据采集 存储 前端开发
Java爬虫性能优化:多线程抓取JSP动态数据实践
Java爬虫性能优化:多线程抓取JSP动态数据实践
|
3月前
|
Java API 调度
从阻塞到畅通:Java虚拟线程开启并发新纪元
从阻塞到畅通:Java虚拟线程开启并发新纪元
300 83
|
3月前
|
安全 算法 Java
Java 多线程:线程安全与同步控制的深度解析
本文介绍了 Java 多线程开发的关键技术,涵盖线程的创建与启动、线程安全问题及其解决方案,包括 synchronized 关键字、原子类和线程间通信机制。通过示例代码讲解了多线程编程中的常见问题与优化方法,帮助开发者提升程序性能与稳定性。
139 0
|
3月前
|
存储 Java 调度
Java虚拟线程:轻量级并发的革命性突破
Java虚拟线程:轻量级并发的革命性突破
251 83
|
4月前
|
移动开发 Java
说一说 Java 是如何实现线程间通信
我是小假 期待与你的下一次相遇 ~