# 1、JUC概述

# 1、JUC是什么

java.util.concurrent在并发编程中使用的工具包,自jdk1.5开始出现该工具包

# 2、线程和进程的概念

# 1、进程是什么

进程是系统进行资源分配和调度的基本单位,是操作系统结构的基础(即打开软件所占用的空间)

# 2、线程是什么

线程是操作系统能够进行运算调度的最小单位,他被包含在进程中。(进程之内独立执行的一个单元执行流),是程序执行的最小单元

# 3、线程的状态

# 1、* 线程状态中的枚举类 Thread.State

 public enum State {

        NEW,   //新建

        RUNNABLE,   //准备就绪

        BLOCKED,   //阻塞

        WAITING,   //不见不散,等待,持续等待

        TIMED_WAITING,   //过时不候,等待

        TERMINATED; //终结(terminated)
 }
代码已经复制到剪贴板
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 2、* wait/sleep方法的区别

1、sleep方法是Thread类中的方法,wait是Object类中的方法

2、sleep不会释放锁,wait会释放锁,但调用它的前提是当前线程占有锁,即代码在synchronied中

3、它们都可以被interrupted方法中断

# 4、并发和并行

并发:同一时刻多个线程在访问同一个子隐患,多线程对一个点,例如:春运抢票,电商秒杀

并行:多项工作一起执行,之后在汇总,例如:泡方便面,水壶烧水,一边撕调料倒入桶中

# 5、管程对象(Monitor)/ 锁

操作系统中叫监视器,java中叫做锁,是一种同步机制,保证同一时间,只有一个线程访问被保护的数据或代码

java同步基于进入和退出,使用管程对象实现,即程序执行时创建一个锁(管程对象),程序执行结束,释放该管程对象

# 6、用户线程和守护线程

用户线程: 平时自定义的thread都是用户线程

守护线程: 例如垃圾回收在后台默默执行的线程是守护线程

区别: 如果用户线程执行没有结束,则jvm不会停止(jvm存活),如果守护线程执行没有结果,但是用户线程结束了,jvm停止

上次更新: 2024/4/13