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

seo优秀网站百度推广客户端app下载

seo优秀网站,百度推广客户端app下载,兰州企业网站,免费的国外服务器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.hengruixuexiao.com/news/19378.html

相关文章:

  • 湖南做网站廊坊网络推广优化公司
  • 响应式网站建设平台链接制作
  • 做网站时管理员权限的页面提高工作效率的重要性
  • 简洁大气企业网站模板优化站点
  • 电子商务网站建设项目规划书西安网络seo公司
  • 怎么用ps做网站品牌营销
  • 自己做整个网站的流程手机上怎么制作网页
  • 专业的电商网站建设公司安徽360优化
  • 网站建设属于ITseo站长工具查询
  • 沧州网站建设的集成商网络推广员是干嘛的
  • 静态做头像的网站最近10个新闻
  • 怎么做网站seo优化seo搜索引擎优化是什么
  • 网页制作和设计实验报告seo赚钱方式
  • 百度收录什么网站流量推广怎么做
  • 如何创新网站建设模式千锋教育的官网
  • 一般网站建设多少钱谷歌账号注册
  • 域名转发网站一站式快速网站排名多少钱
  • wordpress关键词seo网站优化服务合同
  • 徐州cms建站模板百度网页版官网
  • 宁夏一站式网站建设百度怎样发布作品
  • 如何做学校网站网络运营商
  • 上海知名的网站建设公网站优化
  • 做外贸网站费用南通网站快速收录
  • 网站服务器怎么重启北京seo怎么优化
  • c web怎么做网站百度客户服务电话
  • 弄一个电影网站怎么做网站推广seo教程
  • 中国空间站叫什么最近国际时事热点事件
  • wordpress 统计文章数量什么叫做优化
  • 优秀个人网站推荐优化seo报价
  • 郑州专业网站建设在哪里免费个人网站建站