JUC

juc:java.util.concurrent
AQS是juc的核心,它是多线程访问共享资源的框架,许多同步类的实现都依赖于它,比如CountDownLatch、CyclicBarrier、Semaphore。
CountDownLatch用来控制一个线程或者多个线程等待多个线程。它维护了一个计数器,每次调用countdown方法的时候计数器值就会减1,减到0的时候那些调用await的方法就会被唤醒。
CyclicBarrier和CountDownLatch类似,也是用来控制线程相互等待的,使用计数器来实现。和CountDownLatch不同的是CyclicBarrier中的计数器采用的是加的方式,当计数器的值达到指定的值,所有等待的线程会被唤醒。还有一个区别就是CyclicBarrier通过调用reset方法可以循环使用计数器。
Semaphore类似操作系统中的信号量,它可以控制对互斥资源访问的线程数目。

juc还有一些其他组件,比如FutureTask、BlockingQueue、ForkJoin。
FutureTask可以用于一些异步获取结果的场景。比如一个任务要执行很长时间的话,就可以用FutureTask来封装这个任务,在主线程完成自己的任务以后再去获取结果。

BlockingQueue就是阻塞队列,它提供了take和put方法。如果队列为空的话,使用take将阻塞直到队列中有内容;如果队列为满的话,使用put将阻塞直到队列有空闲位置。它可以用来实现生产者消费者问题。

ForkJoin主要用于并行计算,可以将大的任务拆分成许多小任务并行计算。

参考:https://cyc2018.github.io/CS-Notes/#/notes/Java%20%E5%B9%B6%E5%8F%91?id=blockingqueue

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值