Java高并发记录
- 高并发线程池
高并发线程池有如下:
- newCacheedThreadPool 无界限线程池,存放个数Integer.MAX_VALUE
可进行线程自动回收,可实现线程工厂
- newFixedThreadPool 有界线程池,可指定最大数量,可定制线程工厂
- newSingleThreadEcecutor 创建单一线程池,单一线程池可以实现队列的
方式执行任务
- 高并发工具包
- Semaphore 主要作用:限制并发执行的线程个数,他可以等待获得许可的同时可以加入等待时间,还有尝试是否可以持有锁等功能
- Exchanger 是线程之间传输数据的方式之一(适用于两个线程之间交互)并且在传输类型上没有限制
- CountDownLatch 可以实现两种角色的线程等待对方的效果
- CyclicBarrier 可以使同类线程等待达到同步的效果,使两个类可以更加完善的实现线程对象之间的同步性,对线程的轨迹控制更加方便
- Phaser 提供了动态增减parties计数,这点比CyclicBarrier 操作更加方便,可以实现某一线程取消同步运行的效果,而且支持在指定屏障处等待,等待过程中还支持中断和非中断功能
- 获取线程返回结果
方法一:future 和 Callable
优点: 从线程中返回数据以便后期处理
缺点: 阻塞性
方法二:CompletionService
优点: 避免Futrure线程阻塞的特点,哪个线程先执行完,先处理哪个线程返回的数据
- 计划任务
- ScheduledThreadPoolExecutor计划任务执行池对象,使用此类可以高效的实现计划线程池,不再重复创建thread对象
- Fork-join分治编程
- 常用线程安全Collection
- ConcurrentHashMap
- ConcurrentSkipListMap
- ConcurrentSkipListSet
- ConcurrentLinkedQueue
- CobcurrentLinkedDeque
- CopyOnWriteArrayList
- CopyOnWriteArraySet
- 常用线程安全队列
- ArrayBlockingqueue
- PriorityBlockingQueue
- LinkedBlockingQueue
- LinkedBlockingQueue