第一章 线程基础知识复习

第一章 线程基础知识复习

  • 1 把锁:synchronized
  • 2 个并:
    • 并发(concurrent):是在同一实体上的多个事件中,是在一台机器上“同时”处理多个任务,同一时刻,其实是只有一个事情再发生
    • 并行(parallel):是在不同实体上的多个事件,是在多台处理器上同时处理多个任务,同一时刻,大家都在做事情,你做你的,我做我的,各干各的
  • 3 个程:
    • 进程:在系统中运行的一个应用程序,每个进程都有它自己的内存空间和系统资源
    • 线程:也被称为轻量级进程,在同一个进程内会有 1 个或多个线程,是大多数操作系统进行时序调度的基本单元
    • 管程:Monitor(锁),也就是我们平时所说的锁。Monitor 其实是一种同步机制,它的义务是保证(同一时间)只有一个线程可以访问被保护的数据和代码,JVM 中同步是基于进入和退出监视器(Monitor 管程对象)来实现的,每个对象实例都会有一个 Monitor 对象,Monitor 对象和 Java 对象一同创建并销毁,底层由 C++ 实现

线程分类(一般不做特别说明配置,默认都是用户线程):

  • 用户线程:是系统的工作线程,它会完成这个程序需要完成的业务操作
  • 守护线程:是一种特殊的线程为其他线程服务的,在后台默默地完成一些系统性的任务,比如垃圾回收线程就是最典型的例子。守护线程作为一个服务线程,没有服务对象就没有必要继续运行了,如果用户线程全部结束,意味着程序需要完成的业务操作已经结束了,系统可以退出了。所以假如当系统只剩下守护线程的时候,守护线程伴随着 JVM 一同结束工作
public class DaemonDemo {

    public static void main(String[] args) {
        Thread t1 = new Thread(() -> {
            System.out.println(Thread.currentThread().getName() + "\t 开始运行" +
                    (Thread.currentThread().isDaemon() ? "守护线程" : "用户线程"));
            while (true) {
                System.out.println("正在运行");
            }
        }, "t1");
        t1.setDaemon(true);
        t1.start();

        try {
            TimeUnit.SECONDS.sleep(3);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("主线程结束");
    }


}

在 main 主线程结束后,守护线程会伴随着 JVM 一同结束工作,即使还有循环没有结束

posted @ 2026-04-13 09:06  清风含薰  阅读(0)  评论(0)    收藏  举报