什么是JUC:java.util.concurrent+java.util.concurrent.atomic+java.util.concurrent.locks
进程:是程序运行和资源分配的基本单位
线程是CPU调度和分派的 能够独立运行的基本单位
一个进程往往可以包含多个线程,至少包含一个,Java默认有2个线程:main+GC
java真的可以开启线程吗?不可以:


调用的本地方法,底层为c++,Java无法直接操作硬件。
并发:多个任务交替使用同一个cpu核心,宏观上看起来一起再跑,微观上同一时刻只有一个任务在执行,依靠cpu快速切换任务(时间片轮转)实现。
并行:多个任务在多个cpu核心上,真正同一时刻一起执行。多核cpu才能做到。
线程的几种状态:NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATED
wait/sleep的区别:
1.来自不同的类,wait来自Object,sleep来自Thread
2.关于锁的释放,wait会释放锁,sleep不会
3,使用范围不同,wait必须在同步代码快中,sleep无限制
4,关于捕获异常,wait不需要,sleep需要捕获异常