线程安全就是:单线程下操作是什么结果,多线程下操作就是什么结果,就是线程安全的。如果单线程下是一个结果,多线程下是另外一个结果,就是线程不安全的。
线程不安全的原因:
1.多个线程在操作共享的数据
2.操作共享数据的代码有多条。
3.多个线程对共享数据有写操作。
线程安全问题如何解决?
使用线程同步的方式。
1.同步代码块,规定一次只能有一个线程操作该代码。

2.同步方法,自动产生一个锁对象,静态方法时为当前类,实例方法为实例 对象

3.同步锁,实现lock接口,可以控制加锁和解锁,灵活度高,但是一定要保证解锁,因为如果出异常,锁无法被释放,所以这里用try...finally保证解锁。以上两种无法实现加锁解锁。

4.volatile变量
5.ThreadLocal类
6.阻塞队列
7.原子类