Java基础第三题多线程中CountDownLatch,CountDownLatch,Semaphore,Future

目录

原题+官方解析

个人解析

1.CountDownLatch

2.CyclicBarrier

3.Semaphore

4.Future

综上所述


原题+官方解析

单选题

3.当我们需要所有线程都执行到某一处,才进行后面的的代码执行我们可以使用?

A. CountDownLatch

B. CyclicBarrier

C. Semaphore

D. Future


正确答案:B

官方解析:暂无官方题目解析,去讨论区看看吧!


个人解析

本题主要就是考察关键字的作用,所以我们分别讲解一下这四个关键字的作用

1.CountDownLatch

  CountDownLatch是等待一组线程执行完毕,在进行其他操作
    1.通过CountDownLatch(int count)构造方法创建一个类,count是这一组线程的个数
    2.当这组内的某一条线程执行完毕,通过countdown()方法反馈回去
    3.在等待的位置用await()方法进行等待,当这组线程执行完毕,停止等待

  所以这是等待一组线程执行完毕,而不是题目中的所有线程执行到某一处,继续进行下面代码

2.CyclicBarrier

  等待某一组线程执行到某个状态,在进行操作

  他与CountDownLatch的区别就在于,CountDownLatch是线程执行完毕,而CyclicBarrier是线程没执行完毕,而是卡在某一处进行等待

3.Semaphore

  作用在于可以控制访问特定资源的线程数

  Semaphore就相当与一个通行证,而通行证数量是有限的.
  比如这样一个场景:当一个景点只能容纳1000人的时候,只有里面的人出来,外面多的人才能进去,他可通行的人数是有限的.所以只有如果景区超过1000人,那么就只能等待里面的人出去.

  Semaphore的意思就是这样,对线程数量进行控制,如果线程数过多,就需要排队等待其他线程结束,才可以继续新的线程的执行

4.Future

  Future代表的是异步执行的结果,意思是当异步执行结束之后,返回的结果将会保存在Future中。

  也就是我们在做一件很长时间的事情的时候,就可以在这个时间去做点别的事情,等长时间的任务执行完毕,在返回其结果.

综上所述

只有AB选项容易使我们产生错误,而AB的区别就是执行完毕和执行到某一状态!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值