1. Java线程的创建和运行
2. Java 线程的几种状态
- NEW:初始状态,线程被构建,但是还没有调用start()方法
- RUNABLE: 运行状态,Java 线程将3.操作系统中的就绪和运行两种状态笼统称作“运行中”
- BLOCKED: 阻塞状态,表示线程阻塞于锁。
- WAITING: 等待状态, 进入该状态表示当前线程需要等待其他线程做出一些特定动作(通知或中断)
- TIME_WAITING: 超时等待状态,该状态不同于WAITING, 它是可以在指定时间自行返回的
-
TERMINATED: 终止状态
Java线程状态变迁图
3. 死锁
- 互斥条件
- 请求与保持条件
- 不剥夺条件
- 循环等待条件
4.synchronized
- 修饰对象
- 实例方法:作用于当前对象的锁,进入同步代码块会获取当前对象的实例的锁
- 静态方法:作用于当前类的锁,会作用于该类所有的实例。
- 代码块: 作用于指定的对象。
- 实现原理
- 修改代码块:利用 monitorenter 和 monitorexit
- 修饰方法:利用ACC_SYNCHRONIZED标识修饰方法,告诉JVM这是一个同步方法。
- synchronized优化手段
锁的几种状态:无锁状态,偏向锁状态,轻量级锁状态,重量级锁状态
优化手段:锁消除, 锁粗化, 偏向锁,轻量级锁,自旋锁, 适应性自旋锁
网友评论