线程安全

原文链接: https://my.oschina.net/zx133/blog/656421

多例模式




ThreadLocal

一个 ThreadLocal可以为多个线程提供一个副本;
ThreadLocal有一个静态内部类ThreadLocalMap(键是当前线程、值为当前变量值);


锁机制

snchronized
隐式锁、下面都是显示锁
自动开启、关闭
锁对象
用在方法上、或代码块上
适合于少量竞争者

ReentrantLock
手动开启:lock
手动关闭:unlock
代码块
高并发,比 snchronized效率高

ReentrantWriteReadLock
读写锁机制(读-读不互斥、其它互斥)
手动开启、关闭


ReentrantLock的扩展


StampedLock
乐观锁、悲观锁逻辑
手动开启关闭

Lock的扩展、吞吐量大,有应用场景限制
co nCurrent安全类

automic
基本类
引用类
数组类型
利用CPU比较交换并交换
和非阻塞算法

vector 数组
安全(方法锁snchronized


copyOnWriteArrayList
set/add/remove加锁(ReentrantLock
read(不加锁)
添加元素时,拷贝副本,对副本进行添加,再将引用指向副本,是为了并发的进行读操作;

占有内存
数据最终一致性(不能实时一致性)
适合于读多写少

copyOnWriteArraySet
copyOnWriteArrayList基础上实现装饰器模式




conCurrentHashMap
实现了map/serializable

hashmap线程安全版 代码块锁 ReentrantLock

多段(Segmemt),每段就是一个hashtable(默认16段)


hashtable

散列表
实现了map/serializable
安全(方法锁snchronized)
与hashmap区别

与conHahMap区别
StringBuffer

安全(方法锁snchronized


转载于:https://my.oschina.net/zx133/blog/656421

你可能感兴趣的:(线程安全)