当前位置: 首页 > news >正文

优秀seo网站seo服务外包费用

优秀seo网站,seo服务外包费用,做门户网站用什么模板好,做国际网站阿里巴巴CyclicBarrier(循环屏障) 直译为可循环使用(Cyclic)的屏障(Barrier)。它可以让一组线程到达一个屏障(同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开…

CyclicBarrier(循环屏障) 直译为可循环使用(Cyclic)的屏障(Barrier)。它可以让一组线程到达一个屏障(同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续工作

CyclicBarrier构造函数

public CyclicBarrier(int parties);//parties表示屏障拦截的线程数量
public CyclicBarrier(int parties, Runnable barrierAction);//parties表示屏障拦截的线程数量,在线程到达屏障时,优先执行barrierAction

应用场景: CyclicBarrier可以用于多线程计算数据,最后合并计算结果的应用场景。比如现在需要计算10个人12个月内的工资详细,可以将线程分为10个,分别计算每个人的工资,最后,再用barrierAction将这些线程的计算结果进行整合,得出最后结果。

CountDownLatch与CyclicBarrier:
CountDownLatch是一个同步的辅助类,允许一个或多个线程,等待其他一组线程完成操作,再继续执行。
CyclicBarrier是一个同步的辅助类,允许一组线程相互之间等待,达到一个共同点,再继续执行。
区别:

  1. CountDownLatch的计数器只能使用一次。而CyclicBarrier的计数器可以使用reset() 方法重置。所以CyclicBarrier能处理更为复杂的业务场景,比如如果计算发生错误,可以重置计数器,并让线程们重新执行一次
  2. CyclicBarrier还提供getNumberWaiting(可以获得CyclicBarrier阻塞的线程数量)、isBroken(用来知道阻塞的线程是否被中断)等方法。
  3. CountDownLatch会阻塞主线程,CyclicBarrier不会阻塞主线程,只会阻塞子线程。

代码实例:
假设要分别计算员工1和员工2的工资,并在都计算完之后进行整合操作,代码实现逻辑如下

package com.concurrency.yuxin.demo;import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;public class CyclicBarrierDemo {public static void main(String[] args) throws InterruptedException{CyclicBarrier cyclicBarrier = new CyclicBarrier(2, new Runnable() {@Overridepublic void run() {System.out.println("汇总已分别计算出的两个员工的工资");}});Thread thread1 = new Thread(new Runnable() {@Overridepublic void run() {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("计算出员工1的工资");try {cyclicBarrier.await();} catch (InterruptedException e) {e.printStackTrace();} catch (BrokenBarrierException e) {e.printStackTrace();}}}, "thread1");Thread thread2 = new Thread(new Runnable() {@Overridepublic void run() {try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("计算出员工2的工资");try {cyclicBarrier.await();} catch (InterruptedException e) {e.printStackTrace();} catch (BrokenBarrierException e) {e.printStackTrace();}}}, "thread2");thread1.start();thread2.start();System.out.println("====end====");}}

输出结果:

====end====
计算出员工1的工资
计算出员工2的工资
汇总已分别计算出的两个员工的工资

从输出结果可以看出
1. 主线程未被阻塞
2. barrierAction在各线程执行结束之后触发

http://www.shuangfujiaoyu.com/news/27737.html

相关文章:

  • 网站怎么设计好看的图片如何免费注册网站平台
  • 网站建设的步骤过程视频新手电商运营从哪开始学
  • 什么网站做外贸最好列举五种网络营销模式
  • 有哪些网站上可以做试卷微信群推广平台有哪些
  • WordPress站点地图代码从事网络营销的公司
  • 赣州做网站的公司哪家好免费开发软件制作平台
  • 平面设计师常用的网站建什么网站可以长期盈利
  • 西安网站制作计划沈阳关键词优化费用
  • 网站怎么谈设计百度热搜广告位
  • 一个网站的建设需要什么手续seo课程心得体会
  • 做网站公司无锡百度搜索引擎优化的养成良好心态
  • wordpress修改分类标题江阴网站优化公司
  • 山东政府网站集约化建设今日头条新闻下载安装
  • 网站规划建设与管理维护cnzz站长统计工具
  • 购物网站源码软文素材网
  • wordpress集团网站百度地图导航2021最新版
  • 自己搭建环境建设网站百度词条搜索排行
  • 在线制作网站淘宝代运营公司十大排名
  • 书画网站建设方案策划国内企业网站模板
  • 越秀营销型网站2021关键词搜索排行
  • 注册城乡规划师挂靠关键词排名优化软件策略
  • 做家政公司网站设计网站模板
  • 专业网站建设公司地址营销型网站制作成都
  • 建设网银登录网站百度关键词竞价排名
  • app网站排名市场调研怎么做
  • 建设企业网站价钱深圳推广优化公司
  • 做农宿的网站如何自己开发软件app
  • 西安建设网站的公司简介seo有哪些经典的案例
  • 网站开发工资淄博信息流优化师
  • 用java做信息发布网站好看的网站模板