线程安全包括哪几类

线程安全包括哪几类

1、

不可变类 一个不可变的对象只要构建正确,其外部可见状态永远不会改变,永远也不会看到它处于不一致的状态。Java类库中大多数基本数值类如Integer、String和BigInteger都是原子性的,是不可变的,但Long和Double就不能保证其操作的原子性,可在声明变量的时候用volatile关键字。不可变对象上没有副作用,并且缓存不可变对象的引用总是安全的。一个不可变的对象的一个引用可以自由共享,而不用担心被引用的对象要被修改。

2、

线程安全性类 线程安全性类的对象操作序列(读或写其公有字段以及调用其公有方法)都不会使该对象处于无效状态,即任何操作都不会违反该类的任何不可变量、前置条件或者后置条件。

3、

有条件的线程安全类 有条件的线程安全类对于单独的操作可以是线程安全的