常用并发工具
Fork-Join、CountDownLatch……
忘我不好
这个作者很懒,什么都没留下…
展开
-
Exchange的介绍及使用
作用用于 两个线程间的数据交换案例public class UseExchange { private static final Exchanger<Set<String>> exchange = new Exchanger<Set<String>>(); public static void main(String[] args) { //第一个线程 new Thread(new Runnabl原创 2020-07-13 18:31:19 · 2213 阅读 · 0 评论 -
Semaphore的介绍及使用
作用主要运用共享锁机制;控制同时访问某个特定资源的线程数量,用在流量控制,通过state值判断,如果state>0,允许新的线程执行;如果state=0,不允许新的线程执行,循环执行是考虑多线程环境下条件不满足时重新获取1)获取锁根据acquire()中 int remaining = available(当前state) - acquires(方法sync.acquireSharedInterruptibly(1)里的参数值1) final int nonfairTryAcqu原创 2020-07-13 18:27:29 · 313 阅读 · 0 评论 -
CyclicBarrier的介绍及使用
作用让一组线程达到某个屏障,被阻塞,一直到组内最后一个线程达到屏障时,屏障开放,所有被阻塞的线程会继续运行CyclicBarrier(int parties)构造方法CyclicBarrier( int parties ),默认屏障开放时所有线程同时执行;CyclicBarrier( int parties, Runnable barrierAction ),屏障开放,barrierAction定义的任务会执行,执行完成后之前的线程就会接着执行CountDownLatch和CyclicBarrie原创 2020-07-13 18:20:19 · 134 阅读 · 0 评论 -
CountDownLatch的介绍及使用
作用是一组线程等待其他的线程完成工作以后在执行,加强版join;await()用来等待,countDown()负责计数器的减一;一个线程需要等待其余线程扣减完一定的数目在执行,就需要在这个线程中执行CountDownLatch对象的await()方法,进入等待队列案例public class UseCountDownLatch { //创建CountDownLatch对象,并表示需要扣减6次 static CountDownLatch latch = new CountDownLatch(原创 2020-07-13 18:06:03 · 123 阅读 · 0 评论 -
Fork-Join的介绍及使用
原理分而治之:规模为N的问题,N<阈值,直接解决,N>阈值,将N分解为K个小规模子问题,子问题互相对立,与原问题形式相同,将子问题的解合并得到原问题的解工作密取每个小规模里面的问题解决完之后,会从别的地方后面拿取处理完成并归还返回值、同步/异步处理ForkJoinTask实现FutureRecursiveTask(有返回值)、RecursiveAction(无返回值)继承ForkJoinTask同步(invoke)异步(execute)案例同步有返回值public cla原创 2020-07-04 17:10:16 · 1592 阅读 · 0 评论