一、线程安全
(一)什么是线程安全问题
多个线程,同时操作同一个共享资源的时候,可能会出现业务安全的问题。
(二)用程序摹拟线程安全问题
二、线程同步
(一)同步思想概述
解决线程安全问题的方案,让多个线程实现先后依次访问共享资源,这样就解决了安全问题。
(二)加锁方案
加锁:每次只允许一个线程加锁,加锁后才能进入访问,访问完毕后自动解锁,然后其他线程才能再加锁进来。有三种实现方案
1. 加锁方式一:同步代码块
在实例方法中建议 this 作为同步锁。
在静态方法中建议 类名.class 作为同步锁。
2. 加锁方式二:同步方法
3. 加锁方式三:Lock锁
锁创建在类里面,用锁名调用lock或者unluck来加锁和解锁。整个加锁解锁要放在try catch finally里面,保证中间代码如果出现bug,也能够顺利解锁。