无同步方案

有一些代码天生就是线程安全的。

可重入代码

可重入代码(Reentrant Code)这种又称纯代码(Pure Code),指可以在代码

任何时刻中断它,转而执行另一段代码,而控制权返回后原来的程序不会出现任何

错误且对结果无影响。

可重入代码的特征
  • 不依赖全局变量、存储在堆上的数据和公用的系统资源
  • 用到的状态量都由参数中传入,不调用非可重入的方法

输入相同的数据,就能返回相同的结果,那就满足可重入性的要求

线程本地存储

线程本地存储(Thread Local Storage),如果一段代码中所需要的数据必须与

其他代码共享,可以看这些共享数据能否保证在同一个线程中执行,如果能,就可以

把共享数据的可见范围限制在同一个线程之内,这样无需同步也能保证线程之间不出现

数据争用的问题。

可用ThreadLocal类实现。