保证线程安全的四种方法
1.Confinement
限制数据共享。
将可变数据限制在单一线程内部,避免竞争。核心思想就是线程之间不共享可变数据类型。
2.Immutable
将可变数据类型改为Immutable类型。
避免多线程间的race condition。
3.Threadsafe data type
共享线程安全的可变数据。
如果必须要在多线程间使用mutable的数据类型,必须要使用线程安全的数据类型。在JDK的类文档中,记录着是否线程安全。如List,Set,Map等集合类,都是线程不安全的。
4.Synchronization
通过锁的机制共享不安全的可变数据。