![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java并发工具类
qq_599571116
这个作者很懒,什么都没留下…
展开
-
【java并发工具类-分工】Fork/Join:单机版的MapReduce
分治1.站在任务分工的并发场景及解决方案2."分治"任务模型3.Fork/Join的使用3.Fork/Join实现斐波那契数列4.ForkJoinPool工作原理4.模拟 MapReduce 统计单词数量5.注意1.站在任务分工的并发场景及解决方案前面我们站在任务分工的角度来介绍java工具类,今天来介绍一下使用场景:对于简单的并行任务,我们可以使用简单的"线程池+Future"方案来解决...原创 2020-04-30 18:46:21 · 303 阅读 · 1 评论 -
【java并发工具-分工】CompletionService:批量执行异步任务
CompletionService前言1.CompletionService原理:2.如何创建CompletionService?3.使用CompletionService完成询价系统的优化。4.CompletionService接口介绍5.利用CompletionService实现dubbo中的Forking Cluster前言怎么个批量获取异步任务?看下面询价系统的实例代码:如果异步查...原创 2020-04-29 11:51:57 · 604 阅读 · 0 评论 -
【java并发工具-分工】CompletableFuture实现异步编程
CompletableFuture1.创建CompletableFuture对象2.CompletionStage接口2.1如何理解CompletionStage接口2.1.1 描述串行关系2.1.2 描述并行关系2.1.3 描述汇聚关系2.2 CompletionStage的异常处理1.创建CompletableFuture对象创建CompletableFuture对象主要靠下面4个静态方法...原创 2020-04-26 11:55:04 · 301 阅读 · 0 评论 -
【管程模型-互斥】:synchronized原理
管程-synchronized什么是管程?管程模型-MESA 模型管程模型的区别简易版 MESA 模型synchronized什么是管程?所谓管程,指的是管理共享变量以及对共享变量的操作过程,让他们支持并发。用java来说,管理一个类的成员变量和成员方法,使之成为线程安全的类。synchronized关键字和wait(),notify()和notifyall()都是管程的组成部分。管程模型...原创 2020-03-19 11:25:37 · 820 阅读 · 0 评论 -
【java并发工具类-互斥】Lock和Condition
并发工具类一.Lock和Condition1.比较synchronized,Lock具有的特点?2.较于synchronized,Lock如何实现可见性?3.ReentrantLock,可重入锁4.公平锁和非公平锁5.如何正确使用锁6.Lock中常见的问题一.Lock和Condition1.比较synchronized,Lock具有的特点?Lock接口的三个方法:// 支持中断的APIv...原创 2020-03-24 15:44:51 · 206 阅读 · 0 评论 -
【java并发工具类-互斥】ReadWriteLock(读写锁)
读写锁1.ReadWriteLock(读写锁)1.2 什么是读写锁?1.3 使用读写锁快速实现一个缓存?1.4 读写锁的升级和降级1.4.1 ReadWriteLock 是不允许升级的!1.4.1 ReadWriteLock 允许降级2. StampedLock(比读写锁更快的锁)2.1 StampedLock支持的三种锁模式2.2 StampedLock注意事项2.3 标准Stamped...原创 2020-03-26 15:10:42 · 254 阅读 · 0 评论 -
【java并发工具类-互斥】 StampedLock(比读写锁性能更高的锁)
比读写锁更快的StampedLock2. StampedLock2.1 StampedLock支持的三种锁模式2.2 StampedLock乐观读原理2.3 StampedLock注意事项2.4 标准StampedLock 读写模板2. StampedLock2.1 StampedLock支持的三种锁模式这三种模式分别是:写锁,悲观读锁,乐观读。其中,它的写锁,悲观读锁和ReadWrit...原创 2020-03-27 10:21:11 · 513 阅读 · 0 评论 -
【java并发工具类-互斥(无锁)】原子类
原子类1.无锁方案1.1-使用无锁方案-原子类保证原子性1.2-无锁方案相对互斥锁1.3-无锁方案原理2.原子类概览2.1-原子化的基本数据类型2.2-原子化的对象引用类型2.3-原子化数组2.4-原子化对象属性更新器2.5-原子化的累加器2.6-总结1.无锁方案1.1-使用无锁方案-原子类保证原子性前面解决原子性问题,比如count+=1问题,都是使用互斥中的互斥锁来解决的,其实对于简单的...原创 2020-03-30 09:41:01 · 178 阅读 · 0 评论 -
【java并发工具类-协作】并发容器
并发容器1.那么如何可以把ArrayList变成线程安全的容器呢?2. 同步容器3. 并发容器3.1 List3.2 Map3.3 Set3.4 Queuejava中容器主要分为四大类:List,Map,Set,和Queue,但并不是所有的容器都是线程安全的,比如ArrayList,就不是线程安全的,1.那么如何可以把ArrayList变成线程安全的容器呢?其实,思路很简单,只要把非线程...原创 2020-03-29 10:03:56 · 128 阅读 · 0 评论 -
【java并发工具类-协作】-Semaphore限流器
Semaphore(英文读:sem破)限流器1.信号量模型信号量模型简单地概括为:一个计数器,一个等待队列,三个原子操作方法,init(),up(),down()。这三个方法的语义具体如下:init():设置计数器的初始值。down():计数器的值 -1。如果-1后此时计数器的值<0,当前线程被阻塞,放入等待队列中,否则当前线程可以继续执行。up():计数器的值 +1。如果+1...原创 2020-03-25 15:55:32 · 342 阅读 · 0 评论 -
【java并发工具类-协作】CountDownLatch和CyclicBarrier
如何让多线程步调一致业务介绍1.创建线程优化业务2. java的线程和操作系统的线程之间的关系:3.线程池方式实现业务4 CountDownLatch4.1 CountDownLatch适用场景4.2 用 CountDownLatch 实现线程等待5.进一步优化性能6.CyclicBarrier6.1 CyclicBarrier适用场景6.2 用 CyclicBarrier 实现线程同步(协作)...原创 2020-03-28 11:46:04 · 166 阅读 · 0 评论 -
【java并发工具类-分工】如何正确创建线程池
线程池1. 线程池消耗2. 线程池其实是一种生产者消费者模式2.1手动实现线程池3. 如何使用Java的线程池?3.1 ThreadPoolExecutor构造方法1. 线程池消耗Java创建对象,在堆内存中分配一块内存空间即可。而创建线程,需要调用操作系统内核的API,然后操作系统要为线程分配一系列资源,成本很高!线程是一个重量级对象,应避免频繁地创建销毁。2. 线程池其实是一种生产者消...原创 2020-04-14 10:46:03 · 334 阅读 · 0 评论 -
【Java并发工具类-分工】Future如何用多线程实现最优的“烧水泡茶”程序?
线程协作1. 如何获取任务的执行结果?1.1 三个submit()方法1.2 submit()和execute()方法的区别?1.3 FutureTask工具类2. 实现最优的"烧水泡茶"程序上一篇中如何正确创建线程池,介绍了ThreadPoolExecutor的execute(Runnable task)提交任务的方法,下面来讲解获取执行任务的返回结果。1. 如何获取任务的执行结果?jav...原创 2020-04-15 11:53:12 · 304 阅读 · 0 评论