# 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
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停止
2、Lock接口 →
