线程安全这里不做多说。
线程安全的实现方法
互斥同步
大并发下,性能有问题,比较简单粗暴,属于排他式独占的悲观锁非阻塞同步
可以理解为乐观锁,比如CAS指令。无同步方案
尽量创建条件避免线程安全问题的发生。
1.可重入代码:可以参考幂等性来理解
2.线程本地存储:考虑数据即使是共享的,但是这块数据是保证在同一个线程中执行的话,那么就可见性就限制到一个线程里面,这样就不用多线程争用,比如ThreadLocal.
参考《深入理解java虚拟机》
线程安全这里不做多说。
线程安全的实现方法
互斥同步
大并发下,性能有问题,比较简单粗暴,属于排他式独占的悲观锁
非阻塞同步
可以理解为乐观锁,比如CAS指令。
无同步方案
尽量创建条件避免线程安全问题的发生。
1.可重入代码:可以参考幂等性来理解
2.线程本地存储:考虑数据即使是共享的,但是这块数据是保证在同一个线程中执行的话,那么就可见性就限制到一个线程里面,这样就不用多线程争用,比如ThreadLocal.
参考《深入理解java虚拟机》