线程安全

线程安全的三种:

1. 不在线程之间共享可变的状态变量。

2. 将共享可变的状态变量修改为不可变的变量。
3. 在访问状态变量时使用同步。

线程安全实现方式:

1. 无状态对象一定是线程安全。如servlet不使用任何全局变量。

2. 原子性,导致原子性的场景:竞态条件如计数器,延迟初始化;应用原子性的场景是少量原子变量且不相关。

3.加锁机制,当在不变性条件中涉及到多个变量时,各个变量之间并不是彼此独立的,而是某个变量的值会对其它变量的值产生约束。

   内置锁synchonized block来支持原子性,线程重入。

原文地址:https://www.cnblogs.com/davidwang456/p/3439835.html