Java常见的线程安全的类
来源:互联网 发布:young网络注册的域名 编辑:程序博客网 时间:2024/06/06 04:53
通过
synchronized
关键字给方法加上内置锁来实现线程安全Timer
,TimerTask
,Vector
,Stack
,HashTable
,StringBuffer
原子类
Atomicxxx
—包装类的线程安全类
如AtomicLong
,AtomicInteger
等等Atomicxxx
是通过Unsafe
类的native方法实现线程安全的BlockingQueue
和BlockingDeque
BlockingDeque
接口继承了BlockingQueue
接口,BlockingQueue
接口的实现类有ArrayBlockingQueue
,LinkedBlockingQueue
,PriorityBlockingQueue
而BlockingDeque
接口的实现类有LinkedBlockingDeque
BlockingQueue
和BlockingDeque
都是通过使用定义为final的ReentrantLock
作为类属性显式加锁实现同步的CopyOnWriteArrayList
和CopyOnWriteArraySet
CopyOnWriteArraySet
的内部实现是在其类内部声明一个final的CopyOnWriteArrayList
属性,并在调用其构造函数时实例化该CopyOnWriteArrayList
,CopyOnWriteArrayList
采用的是显式地加上ReentrantLock
实现同步,而CopyOnWriteArrayList
容器的线程安全性在于在每次修改时都会创建并重新发布一个新的容器副本,从而实现可变性。Concurrentxxx
最常用的就是ConcurrentHashMap
,当然还有ConcurrentSkipListSet
和ConcurrentSkipListMap
等等。ConcurrentHashMap
使用了一种完全不同的加锁策略来提供更高的并发性和伸缩性。ConcurrentHashMap
并不是将每个方法都在同一个锁上同步并使得每次只能有一个线程访问容器,而是使用一种粒度更细的加锁机制——分段锁
来实现更大程度的共享
在这种机制中,任意数量的读取线程可以并发访问Map,执行读取操作的线程和执行写入操作的线程可以并发地访问Map,并且一定数量的写入线程可以并发地修改Map,这使得在并发环境下吞吐量更高,而在单线程环境中只损失非常小的性能ThreadPoolExecutor
ThreadPoolExecutor
也是使用了ReentrantLock
显式加锁同步Collections
中的synchronizedCollection(Collection c)
方法可将一个集合变为线程安全,其内部通过synchronized
关键字加锁同步
- Java常见的线程安全的类
- 线程安全的Java类
- java线程安全的类
- java的线程安全
- java的线程安全
- Java -- 线程的安全
- Java-编写高效的线程安全类
- 编写高效的java线程安全类
- 线程安全的JAva日志类
- Java 中线程安全的类
- Java基础----线程安全的类
- java线程安全的集合类
- java线程安全的容器类
- Java设计线程安全的类
- java集合框架,线程安全的类
- Java集合中线程安全的类
- java线程安全的ThreadLocal
- java 的容器线程安全
- 方法重载(overload)
- 作用域、执行环境、闭包
- java 运行 linux shell 命令
- 非递归实现二叉树的前序,中序,后序遍历打印
- 取消MySQL timestamp列默认ON UPDATE CURRENT_TIMESTAMP
- Java常见的线程安全的类
- 浅拷贝与深拷贝
- Linux基础 Shell基础学习
- 梯度上升算法迭代过程和数学原理
- batch_size 对分类器性能影响实验记录
- Oracle 软件及静默安装数据库
- 简单MVC框架搭建
- malloc 和new知识点复习
- Java反射机制详解