Java进阶教程,全面剖析Java多线程编程,线程安全,笔记12
Java进阶教程,全面剖析Java多线程编程,线程安全,笔记12
一、参考资料
多线程&JUC-12-线程的安全问题
多线程&JUC-13-同步代码块
多线程&JUC-14-同步代码块的两个小细节
二、笔记总结
2.1、线程安全问题
- 下图代码中,模拟三个线程卖一百张票,出现了两个问题
- 票被重复卖出
- 票的数量超过了一百张
2.2、问题原因分析
2.3、问题解决办法
- 使用 synchronized 线程锁
- 当线程1抢占到资源,开始执行买票的逻辑代码时,线程2和线程3即使抢到了资源,也必须等待,线程1执行完 synchronized 中的代码后,线程2和线程3才能执行 synchronized 中的代码。
- 从下图的打印看出,一百张票,正常卖出。