大白话理解,快速拿下JUC(一)

文章介绍了Java并发编程中的关键概念,包括JUC(java.util.concurrent)包,进程与线程的定义,线程的六种状态,wait和sleep的区别,以及并发与并行的概念。此外,还详细解释了管程作为同步机制的作用,以及用户线程和守护线程的特点和应用场景。
摘要由CSDN通过智能技术生成

1、什么是JUC?

        全称是java.util .concurrent ,说白了就是多线程的意思

2、什么是进程?什么是线程?

        进程:就是一个应用程序,比如微信、京东、淘宝等一系列的app或者exe就可以理解为一个进程

        线程:是操作系统能够进行运算调度的最小单位,说人话就是可以理解为app里边各个功能点,比如淘宝app就是一个进程,那么淘宝的查看商品、下单、物流、评论等就是一个个的线程,这么多个功能(线程)组合起来的可以作为一个进程。

3、线程的状态?

        NEW ( 新建 )、 RUNNABLE(准备就绪)、BLOCKED(阻塞)、WAITING(不见不散)、TIMED_WAITING (过时不候)、TERMINATED ( 终结 )
4、 wait和sleep区别?
        a、都是睡着的意思
        b、 sleep 是 Thread 的静态方法,wait 是 Object 的方法,任何对象实例都 能调用。
        c、sleep 不会释放锁,它也不需要占用锁。wait 会释放锁,但调用它的前提 是当前线程占有锁(即代码要在 synchronized 中)。
        d、它们都可以被 interrupted 方法中断,有一个共同点,在哪睡的在哪醒。
5、并发与并行什么意思?
        并发:多个线程同时访问一个资源,比如买火车票、电商秒杀等
        并行:多个线程一起执行,最后统一汇总,比如组装变形金刚,你和小伙伴一起组装,你负责组装胳膊, 一个小伙伴负责组装腿 ,另一个小伙伴负责组装身子和头,最后你们都完成了之后再合并组装就是并行
6、管程是什么?
        monitor(管程): 就是锁,是一种同步机制,保证同一个时间,只有一个线程能访问,大白话就是,你声明了一个str对象,str有一个管程对象,比如线程A拿到了str的管程对象,别的线程就不能拿到,等线程A退出释放str管程对象,其他线程才能拿到。
7、什么是用户线程和守护线程?
        用户线程:就是自己定义的线程和常用的那些普通线程就是用户线程,主线程结束的情况下,用户线程还在运行,则jvm存活
        守护线程:就是运行在后台的线程,可以理解为看不见的线程,只要代码运行他就会存在,主线程结束的情况下,没有在运行的用户线程,则jvm结束
         用户线程特点验证:验证运行结果如下,因为线程A就是一个用户线程,主线程结束了,但用户线程有while循环,用户线程并未结束,所以jvm是存活状态
public class test {
    public static void main(String[] args) {
        Thread aa = new Thread(() -> {
            System.out.print("A当前线程名称:" + Thread.currentThread().getName() + "--是否守护线程:"
                    + Thread.currentThread().isDaemon());
            while (true){

            }
        }, "aa");
        aa.start();
        System.out.println("结束了");
    }
}

 守护线程验证:如下图,当无用户线程情况下,jvm结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值