一、JUC是java原生并发包 java.util.concurrent
二、线程的六种状态
1、NEW:新建
2、RUNNABLE:运行
3、BLOCKED:阻塞
4、WAITING:等待
5、TIMED_WAITING:延时等待
6、TERMINATED:终止
三、WAIT 和 SLEEP 区别
WAIT | SLEEP | |
类不同 | Object | Thread |
释放 | 会 | 不会 |
范围 | WAIT和NOTIFY是在线程通信时一起使用 | 独立方法,哪里都可以用 |
异常 | 需要补货 |
四、Synchronized 和 Lock 区别
Synchronized | Lock | |
类型 | 关键字 | 对象 |
获取锁 | 无法获取 | 可尝试获取、判断 |
释放锁 | 自动释放 | 必须手动,不释放会死锁 |
遇阻塞 | 一直等待 | 尝试获取,失败放弃 |
是否公平 | 非公平 | 可通过参数设置是否公平,默认非公平 |
锁范围控制 | 块或类 | 可精准控制 |