java并发

线程池(java各种线程池设计、线程池原理)

 


 

多线程通信同步锁(各种锁、信号量、条件变量等)

 


 

多线程之间协作 [CountDownLatch\CyclicBarrier]

CountDownLatch: 类似于一个计数器。单个线程可重入。调用awit()方法阻塞,等待计数器归0。由此可用于实现一个人在等待一堆人做完某件事之后做另外的事情。

CyclicBarrier: 类似于一个栅栏。每个人都必须到达这个地方,才方可做下一个事儿。若其中任何一个人没做完,另外一个也会阻塞在这个地方。

DIFF:   CyclicBarrier allows a number of threads to wait on each other, whereas CountDownLatch allows one or more threads to wait for a number of tasks to complete

CountDownLatch 多线程场景下调用countdown即为减1,不可重用。没有set方法。

CyclicBarrier 调用awit,线程并不退出,等待其他所有线程调用awit,才可冲破栅栏。可重用。

CyclicBarrier 底层实现原理:lock.lock(); lock.getCondition().await();  trip.signalAll();  条件变量+互斥锁【典型的生产者-共享资源-消费者处理模式:等待-唤醒机制】

    

posted @ 2019-06-06 22:45  codelife.club  阅读(134)  评论(0)    收藏  举报