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

可以做lebenslauf的网站/手机百度seo怎么优化

可以做lebenslauf的网站,手机百度seo怎么优化,哪个建站软件比较好带论坛,海外购物网站上填手机号码怎么做CyclicBarrier CyclicBarrier也是一个同步辅助类,它允许一组线程相互等待直到到达某个工作屏障点,通过他可以完成多线程之间的相互等待。每个线程都就绪之后才能执行后面的操作。和CountLatch有相似的地方都是通过计数器来实现的。当某个线程执行了await…

CyclicBarrier

CyclicBarrier也是一个同步辅助类,它允许一组线程相互等待直到到达某个工作屏障点,通过他可以完成多线程之间的相互等待。每个线程都就绪之后才能执行后面的操作。和CountLatch有相似的地方都是通过计数器来实现的。当某个线程执行了await()方法后就进入等待状态,计数器进行加1操作,当增加后的值达到我们设定的值后,线程被唤醒,继续执行后续操作。CyclicBarrier是可重用的计数器,CyclicBarrier的使用场景和CountDownLatch的使用场景很相似,可以用于多线程计算数据最后总计结果。

CyclicBarrier和CountDownLatch的使用区别:

  1. CountDownLatch的计数器只能使用一次,CyclicBarrier可以用reset方法重置。
  2. CountDownLatch是一个线程等待其他线程完成某个操作后才能继续执行。也就是一个或个多线程等待其他的关系,而CyclicBarrier是实现了多个线程之间的相互等待,所有线程都满足了条件之后才能继续使用。

演示代码

@Slf4j
public class CyclicBarrierExample1 {private static CyclicBarrier barrier = new CyclicBarrier(5);public static void main(String[] args) throws Exception {ExecutorService executor = Executors.newCachedThreadPool();for (int i = 0; i < 10; i++) {final int threadNum = i;Thread.sleep(1000);executor.execute(() -> {try {race(threadNum);} catch (Exception e) {log.error("exception", e);}});}executor.shutdown();}private static void race(int threadNum) throws Exception {Thread.sleep(1000);log.info("{} is ready", threadNum);barrier.await();log.info("{} continue", threadNum);}
}
复制代码

输出结果如下:

20:43:46.324 [pool-1-thread-1] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 0 is ready
20:43:47.322 [pool-1-thread-2] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 1 is ready
20:43:48.323 [pool-1-thread-3] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 2 is ready
20:43:49.323 [pool-1-thread-4] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 3 is ready
20:43:50.325 [pool-1-thread-5] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 4 is ready
20:43:50.325 [pool-1-thread-5] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 4 continue
20:43:50.325 [pool-1-thread-1] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 0 continue
20:43:50.325 [pool-1-thread-2] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 1 continue
20:43:50.325 [pool-1-thread-4] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 3 continue
20:43:50.325 [pool-1-thread-3] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 2 continue
20:43:51.325 [pool-1-thread-6] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 5 is ready
20:43:52.326 [pool-1-thread-1] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 6 is ready
20:43:53.326 [pool-1-thread-2] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 7 is ready
20:43:54.326 [pool-1-thread-4] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 8 is ready
20:43:55.327 [pool-1-thread-3] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 9 is ready
20:43:55.327 [pool-1-thread-3] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 9 continue
20:43:55.327 [pool-1-thread-6] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 5 continue
20:43:55.327 [pool-1-thread-1] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 6 continue
20:43:55.327 [pool-1-thread-2] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 7 continue
20:43:55.327 [pool-1-thread-4] INFO com.concurrency.example.aqs.CyclicBarrierExample1 - 8 continue
复制代码

我们定义了 private static CyclicBarrier barrier = new CyclicBarrier(5),每次调用await后加1 知道等于5就一起执行接下来的操作。

我们在创建CyclicBarrier的时候是可以传入一段runable的,下面看一下代码

@Slf4j
public class CyclicBarrierExample3 {private static CyclicBarrier barrier = new CyclicBarrier(5, () -> {log.info("callback is running");});public static void main(String[] args) throws Exception {ExecutorService executor = Executors.newCachedThreadPool();for (int i = 0; i < 10; i++) {final int threadNum = i;Thread.sleep(1000);executor.execute(() -> {try {race(threadNum);} catch (Exception e) {log.error("exception", e);}});}executor.shutdown();}private static void race(int threadNum) throws Exception {Thread.sleep(1000);log.info("{} is ready", threadNum);barrier.await();log.info("{} continue", threadNum);}
}
复制代码

在线程到达=执行屏障时,线程会优先执行这个runable

private static CyclicBarrier barrier = new CyclicBarrier(5, () -> {log.info("callback is running");});
复制代码
http://www.lbrq.cn/news/1622017.html

相关文章:

  • wordpress数据库密码/seo优化排名
  • 做竹鼠网站/百度优化怎么做
  • 做网站赚钱容易吗/博客推广的方法与技巧
  • 企业网站建设排名推荐/中国十大广告公司排行榜
  • 国外网站 国内做镜像/长沙网站se0推广优化公司
  • 农家乐网站建设方案/广州全网推广
  • 建盏供应商排行榜/上海seo优化公司 kinglink
  • 成都响应网站建设/指数分布的分布函数
  • 求网站建设方法/免费ip地址网站
  • 培训网站建设方案模板下载/seo排名优化北京
  • 网站后台维护怎么做/百度网络营销app
  • 网站建设的目的及目标/上海网站排名优化怎么做
  • 网站栏目做跳转/莱芜seo
  • 湛江网站建设方案服务/友链交换网站源码
  • 上海市工程信息网站/百度高级搜索首页
  • 中国建设规划采购网站/关键词全网搜索指数
  • 监控摄像头做斗鱼直播网站/企业文化案例
  • 个人网站开发技术要求/推广普通话演讲稿
  • 美女做暖暖免费网站/今日冯站长之家
  • 重庆商城网站建设公司/广告网站推荐
  • 西安网址开发 网站制作/百度合伙人答题兼职赚钱
  • flash动画制作网页/快速将网站seo
  • 优秀企业网站建设价格/代发广告平台
  • 外贸网站建设和优化/网站seo服务公司
  • 如何做网站推广页面/郑州百度推广开户
  • 网站建设饣金手指科杰十二/班级优化大师app
  • 郑州网站制作天强科技/网站流量数据分析
  • 黄岛建网站/如何去推广一个app
  • 幼儿园网站开发/惠州百度推广排名
  • 代理ip平台/武汉seo价格
  • Java抽Oracle数据时编码问题
  • 【kafka】消息队列
  • Prompt工程记录
  • 【Linux操作系统】简学深悟启示录:Linux环境基础开发工具使用
  • RCLAMP2574N.TCT Semtech:超低钳位TVS二极管 0.5pF超低电容+±30kV超强防护
  • Web开发系列-第0章 Web介绍