线程状态描述
状态 | 操作 | 描述 |
---|---|---|
NEW | new Thread().start() | 创建线程 |
READ | 这个状态在操作体统层面提现 | |
RUNNABLE | 操作系统调度 | 线程占用cpu时间片 |
WAITING | wait(),join(),LockSupport.park() | |
TIMED WAITING | sleep(long),wait(long),join(long),LockSupport.parkUnitl() | |
BLOCKED | 加了Synchronized并且没有抢占到锁的时候才会有 | |
TERMINATED | 运行完成或者中断 | 执行结束,线程消亡 |
线程状态流转
线程结束的几种方式
- 强杀 thread.stop() 不推荐
- 定义全局volatile 变量控制
- 中断
- run()方法执行完毕
Synchronized关键字
jdk1.6之前 无锁和重量锁
jdk1.6之后 无锁 偏向锁(没有线程竞争,单线程) 轻量锁(自旋抢占) 重量锁(存在阻塞 唤醒需要CPU调度)
1.修饰实例方法 锁状态存储在this
2.修饰静态方法 锁状态存储在X.class
3.修饰代码块 ()里面是谁锁状态就存储在哪里