线程安全指的是多线程访问同一代码或同一数据的时候,不会产生不确定的结果,编写线程安全的代码依靠的是线程同步和加锁机制。

需要实现三个方面:

  1. 原子性:互斥访问,同一个时刻只能有一个线程来对它进行操作, 如Atomic包,锁
  2. 可见性:一个线程对主内存的修改可以及时的被其他线程观察的到
  3. 有序性:一个线程观察其他线程中指令执行顺序,由于指令重排序存在,观察结果一般杂乱无序