第一章 Java常用的并发类
2017-11-28 14:13
337 查看
注:本系列博客主要参考于《分布式Java应用:基础与实践》,林昊 著
1、常用的并发集合类
ConcurrentHashMap:线程安全的HashMap的实现
CopyOnWriteArrayList:线程安全且在读操作时无锁的ArrayList
CopyOnWriteArraySet:基于CopyOnWriteArrayList,不添加重复元素
ArrayBlockingQueue:基于数组、先进先出、线程安全,可实现指定时间的阻塞读写,并且容量可以限制
LinkedBlockingQueue:基于链表实现,读写各用一把锁,在高并发读写操作都多的情况下,性能优于ArrayBlockingQueue
2、原子类
AtomicInteger:线程安全的Integer,基于CAS(无阻塞,CPU原语),优于使用同步锁的Integer
3、线程池
ThreadPoolExecutor:一个高效的支持并发的线程池,可以很容易的讲一个实现了Runnable接口的任务放入线程池执行,但要用好这个线程池,必须合理配置corePoolSize、最大线程数、任务缓冲队列,以及队列满了+线程池满时的回绝策略,一般而言对于这些参数的配置,需考虑两类需求:高性能和缓冲执行。
Executor:提供了一些方便的创建ThreadPoolExecutor的方法。
FutureTask:可用于异步获取执行结果或取消执行任务的场景,基于CAS,避免锁的使用
4、锁
ReentrantLock:与synchronized效果一致,但是又更加灵活,支持公平/非公平锁、支持可中断的锁、支持非阻塞的tryLock(可超时)、支持锁条件等,需要手工释放锁,基于AbstractQueueSynchronizer
ReentrantReadWriteLock:与ReentrantLock没有关系,采用两把锁,用于读多写少的情形
1、常用的并发集合类
ConcurrentHashMap:线程安全的HashMap的实现
CopyOnWriteArrayList:线程安全且在读操作时无锁的ArrayList
CopyOnWriteArraySet:基于CopyOnWriteArrayList,不添加重复元素
ArrayBlockingQueue:基于数组、先进先出、线程安全,可实现指定时间的阻塞读写,并且容量可以限制
LinkedBlockingQueue:基于链表实现,读写各用一把锁,在高并发读写操作都多的情况下,性能优于ArrayBlockingQueue
2、原子类
AtomicInteger:线程安全的Integer,基于CAS(无阻塞,CPU原语),优于使用同步锁的Integer
3、线程池
ThreadPoolExecutor:一个高效的支持并发的线程池,可以很容易的讲一个实现了Runnable接口的任务放入线程池执行,但要用好这个线程池,必须合理配置corePoolSize、最大线程数、任务缓冲队列,以及队列满了+线程池满时的回绝策略,一般而言对于这些参数的配置,需考虑两类需求:高性能和缓冲执行。
Executor:提供了一些方便的创建ThreadPoolExecutor的方法。
FutureTask:可用于异步获取执行结果或取消执行任务的场景,基于CAS,避免锁的使用
4、锁
ReentrantLock:与synchronized效果一致,但是又更加灵活,支持公平/非公平锁、支持可中断的锁、支持非阻塞的tryLock(可超时)、支持锁条件等,需要手工释放锁,基于AbstractQueueSynchronizer
ReentrantReadWriteLock:与ReentrantLock没有关系,采用两把锁,用于读多写少的情形
相关文章推荐
- 第一章 Java常用的并发类
- 第一章 Java常用的并发类
- 第一章Java常用日志框架介绍
- java 常用并发类
- java常用并发类的使用与替换
- 第一章 Java常用集合类总览
- Java常用并发类
- JAVA 并发类(一) 常用的并发类
- 第一章 Java常用集合类总览
- Java常用工具类之删除文件
- Java中对List集合的常用操作
- Java常用的设计模式11:常用设计模式之代理模式(结构型模式)
- java8 lambda表达式之 Stream常用方法
- java中常用的8种基本数据类型,包括字节数
- Java中String类的常用方法示例
- JAVA-初步认识03-第一章命令行
- Java常用的一些正则表达式验证
- Java基础知识之常用类库(2)
- Java 中常用的设计模式?说明工厂模式?
- 一遍记住Java常用的八种排序算法与代码实现