1 synchronized
使用注意点
- 锁对象不能为空
- 作用域不宜太大
- 避免死锁
2 如何选择 Lock
和 synchronized
- 尽量都不使用,用 java.util包下的各种工具类
- 优先使用
synchronized
3 多线程访问同步方法的各种具体情况
2 思考
2.1 多个线程等待同一个 synchronized
锁的时候,JVM如何选择下一个获取的是哪个线程?
- 内部锁调动机制
2.2 synchronized
使得同时只有一个线程可以执行,性能较差,有什么方法可以提升性能
- 优化使用的范围。使得临界区(被保护的区域)在符合要求的情况下,尽可能小
2.3 什么是锁的升级和降级?什么是JVM里的偏斜锁、轻量级锁、重量级锁
3 总结
- 一句话介绍
synchronized
JVM会自动通过使用 monitor 来加锁和解锁,保证了同时只有一个线程可以执行指定的代码,从而保证了线程安全,同时具有可重入和不可中断的性质。