b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

semaphore java.util.concurrent常用类(Cou

电脑杂谈  发布时间:2018-02-12 22:43:19  来源:网络整理

python semaphore_semaphore java用法_semaphore

CyclicBarrier是用来一个关卡来阻挡住所有线程,等所有线程全部执行到关卡处时,再统一执行下一步操作。假设一个场景:每个线程代表一个跑步运动员,当运动员都准备好后,才一起出发,只要有一个人没有准备好,大家就等待 。

代码示例:

结果:只有都准备OK了以后才继续执行await后面的代码

CountDownLatch是一个计数器闭锁,主要的功能就是通过await()方法来阻塞住当前线程,然后等待计数器减少到0了,再唤起这些线程继续执行。常用于某些初始化操作,等待初始化执行完毕后,通知主线程继续工作。

代码示例:

结果:

CountDownLacth的计数器只能使用一次,而CyclicBarrier的计数器可以使用reset方法重置。所以CyclicBarrier能处理更为复杂的业务场景。例如,若计算发生错误,可以重置计数器,并让线程重新执行一次。

semaphore java用法_python semaphore_semaphore

CyclicBarrier还提供其他有用的方法,比如getNumberWaiting方法可以获得CyclicBarrier阻塞的线程数量。isBroken()方法用来了解阻塞的线程是否被中断。semaphore

Semaphore与CountDownLatch相似,不同的地方在于Semaphore的值被获取到后是可以释放的,并不像CountDownLatch那样一直减到底。semaphore它也被更多地用来限制流量,类似阀门的 功能。如果限定某些资源最多有N个线程可以访问,那么超过N个主不允许再有线程来访问,同时当现有线程结束后,就会释放,然后允许新的线程进来。有点类似于锁的lock与 unlock过程。相对来说他也有两个主要的方法:

用于获取权限的acquire(),其底层实现与CountDownLatch.countdown()类似;

用于释放权限的release(),其底层实现与acquire()是一个互逆的过程。

代码层面的限流策略

Semaphore sema = new Semaphore(5);//这里的5就表示最多接受5个线程。

sema.aquire();//获取授权

semaphore_python semaphore_semaphore java用法

代码块;

sema.release();//释放

代码示例:

它的原理在之前介绍过了,下面看下concurrent包下的Future是怎么用的?

代码示例:

java.util.concurrent常用类(CountDownLatch,Semaphore,CyclicBarrier,Future)

标签:


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-74324-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...