JUC--多线程-用户线程-守护线程

native:本地方法栈,c语言的函数,但凡调用的是这个接口,就是调用底层操作系统,第三方c语言的接口。

也就是说多线程和语言无关,是操作系统层面的东西。基本上每种语言都有自己的多线程实现方式。

java的前身就是c++

java语言本身底层就是c++语言

当你启动了一个线程,首先你先调用了一个

 openjdk与jiava本地接口一般都是一一对应的,Thread.java对应的就是Thread.c

start0其实就是JVM_StartThread。

多线程包含:

锁:synchronized

并发:在同一实体上的多个事件,是在一台处理器上“同时”处理多个任务,同一时刻,其实是只有一个事件在发生。

并行:在不同实体上的多个事件,是在多台处理器上同时处理多个任务,同一时刻,大家真的都在做事情,各做各的。

进程:简单的说,在系统中运行一个应用程序就是一个进程,每一个进程都有它自己的内存空间和系统资源。

线程:也被称为轻量级进程,在同一个进程内会有一个或多个线程,也是大多数操作系统进行时序调度的基本单元。、

管程:Monitor(监视器),也就是我们平时所说的锁,其实是一种同步机制,他的义务是保证(同一时间)只有一个线程可以访问被保护的的数据和代码。

JVM中同步时基于进出和退出监视器对象(Monitor,管程对象)来实现的,每个对象实例都会有一个Monitor对象。

Monitor对象会和Java对象一同创建并销毁,它底层是由C++语言来实现的。

一个对象被synchronized修饰,JIT编译器会告诉jvm,生成对象的同时生成monitor

 java线程分为用户线程和守护线程

一般不做特别说明配置,默认都是用户线程

用户线程:

是系统的工作线程,它会完成这个程序需要完成的业务操作。

守护线程:

是一种特殊的线程,为其他线程服务的,在后台完成一些系统性的服务,如:垃圾回收线程。

守护线程作为一个服务线程,没有服务对象就没有必要继续运行了,如果用户线程全部结束了,意味着程序需要完成的业务操作已经结束了,系统可以退出了。所以假如当系统只剩下守护线程的时候,java虚拟机会自动退出。

判断线程是用户线程还是守护线程有一个属性,叫isDaemon

true表示是守护线程

false表示是用户线程

public class Test2 {
    public static void main(String[] args) {
        new Thread(() -> {
            System.out.println(Thread.currentThread().getName()+"  "+Thread.currentThread().isDaemon());
        },"t1").start();
    }
}

 结果为false,表示不是守护线程,也就是用户线程

import java.util.concurrent.TimeUnit;

public class Test2 {
    public static void main(String[] args) {
        new Thread(() -> {
            System.out.println(Thread.currentThread().getName()+"  "+Thread.currentThread().isDaemon());
            while (true){

            }
        },"t1").start();

        //暂停几秒钟线程
        try {
            TimeUnit.SECONDS.sleep(3);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println(Thread.currentThread().getName()+"   end");
    }


}

 可以看到,线程t1是没结束的,但是主线程已经执行完了,但是此时程序并没有退出,说明用户线程之间互不影响。

但是当我们把t1设置成守护线程时

 

 主线程结束,程序就退出了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海上生日朋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值