AtomicBoolean它允许一个线程等待一个线程完成任务,然后运行:

A boolean value that may be updated atomically. See the java.util.concurrent.atomic package specification for description of the properties of atomic variables. An AtomicBoolean is used in applications such as atomically updated flags, and cannot be used as a replacement for a Boolean.
public static void main(String[] args) {Thread t2 = new Thread(new BarWorker("bb"));Thread t1 = new Thread(new BarWorker("aa"));t2.run();t1.run();}private static class BarWorker implements Runnable {private static AtomicBoolean exists = new AtomicBoolean(false);private String name;public BarWorker(String name) {this.name = name;}public void run() {if (exists.compareAndSet(false, true)) {  //当第一个线程设置为true后,另外的线程是进不来的System.out.println(name + " enter"+"currentvalue="+exists.get());try {System.out.println(name + " working");Thread.sleep(2000);} catch (InterruptedException e) {// do nothing}System.out.println(name + " leave");exists.set(false);} else {System.out.println(name + " give up");}}}

打印的结果:

bb entercurrentvalue=true
bb working
bb leave
aa entercurrentvalue=true
aa working
aa leave

CountDownLatch

一个同步辅助类。在完毕一组正在其它线程中运行的操作之前,它同意一个或多个线程一直等待。

假设设置  final CountDownLatch end = new CountDownLatch(10);  end.countDown();能够降低计数

假设在某个地方写  end.await();  假设计数不为0,全部线程会一直等待,计数不会被重置

private static  CountDownLatch mLatch = new CountDownLatch(5);public static void main(String[] args) throws InterruptedException {final ExecutorService exec = Executors.newFixedThreadPool(10);  for (int index = 0; index < 5; index++) {final int NO = index + 1;  Runnable run = new Runnable() {public void run() {  try {  System.out.println(NO + " working");Thread.sleep(2000);} catch (InterruptedException e) {  } finally {  mLatch.countDown();}  }  };  exec.submit(run);}  mLatch.await();  System.out.println("finish");  exec.shutdown();  }

结果:

1 working
3 working
2 working
4 working
5 working
finish

版权声明:本文博客原创文章,博客,未经同意,不得转载。

JAVA多线程两个实用的辅助类(CountDownLatch和AtomicBoolean)相关推荐

  1. java boolean 多线程_JAVA多线程两个实用的辅助类(CountDownLatch和AtomicBoolean)

    AtomicBoolean它允许一个线程等待一个线程完成任务,然后运行: A boolean value that may be updated atomically. See the java.ut ...

  2. Java多线程两种实现方式的对比

    Java多线程两种实现方式的对比 一种,直接继承Thread类 一种,实现Thread类的Runnable接口 两种方式的区别 比如,售票厅有四个窗口,可以发售某日某次列出的100张车票,此时,100 ...

  3. java 多线程两种方式_JAVA多线程实现的两种方式

    java多线程实现方式主要有两种:继承Thread类.实现Runnable接口 1.继承Thread类实现多线程 继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了 ...

  4. linux systemtap java,Systemtap 两个实用的小例子

    什么是 systemtap Systemtap is a tool that allows developers and administrators to write and reuse simpl ...

  5. java多线程同步的四种方法_java中实现多线程的两种方法

    java多线程有几种实现方法,都是什么?同步有几种实java中多线程的实现方法有两种:1.直接继承thread类:2.实现runnable接口:同步的实现方法有五种:1.同步方法:2.同步代码块:3. ...

  6. Java多线程系列---“JUC锁”01之 框架

    本章,我们介绍锁的架构:后面的章节将会对它们逐个进行分析介绍.目录如下: 01. Java多线程系列--"JUC锁"01之 框架 02. Java多线程系列--"JUC锁 ...

  7. Java多线程系列(四):4种常用Java线程锁的特点,性能比较、使用场景

    多线程的缘由 在出现了进程之后,操作系统的性能得到了大大的提升.虽然进程的出现解决了操作系统的并发问题,但是人们仍然不满足,人们逐渐对实时性有了要求. 使用多线程的理由之一是和进程相比,它是一种非常花 ...

  8. 《Java多线程编程核心技术》读书笔记

    为什么80%的码农都做不了架构师?>>>    <Java多线程编程核心技术>读书笔记. ###第一章 Java多线程技能 使用Java多线程两种方式. 继承Thread ...

  9. Java多线程编程-(6)-两种常用的线程计数器CountDownLatch和循环屏障CyclicBarrier

    前几篇: Java多线程编程-(1)-线程安全和锁Synchronized概念 Java多线程编程-(2)-可重入锁以及Synchronized的其他基本特性 Java多线程编程-(3)-线程本地Th ...

最新文章

  1. 如何用公式化思维?几个经典公式收集
  2. 简练软考知识点整理-控制干系人参与
  3. (转)创建Windows服务(Windows Services)N种方式总结
  4. 台式计算机l小时耗电,电脑一天的耗电量是多少?不算不知道 一算吓一跳!
  5. 全球及中国一般手术器械行业投资态势与发展价值评估报告2022版
  6. Linux主机密码设置,Linux如何批量创建用户和设置密码
  7. RabbitMQ生产者代码
  8. java.lang.NumberFormatException: multiple points错误问题
  9. 将组策略编辑器添加到控制面板
  10. win2008修改远程端口
  11. c语言作业系统输出超限,C语言网Online Judge系统支持语言和编译说明
  12. 数据可视化—如何利用R,制作DashBoard
  13. oracle日期基本数据,oracle日期时间函数总结
  14. 接口测试用例设计思路思维导图
  15. Ipad投屏到windows工具推荐
  16. *寒假水121——叠筐
  17. 【听课笔记】复旦大学遗传学_06基因组
  18. Pygame实现小球躲避
  19. 零基础入门microbit教程
  20. 刷机大师乐蛙定制版 v3.4.0 官方版

热门文章

  1. 使用RNNs进行机器翻译——介绍RNN和LSTM网络及其应用
  2. SAP MM 预留单据里的Base date和Requirement date
  3. 十项观察!药物开发中的AI现状
  4. 黄海广博士的机器学习个人笔记及深度学习笔记
  5. python的try exception捕获异常
  6. Forerunner:首个面向“多未来”的推测执行技术
  7. ​20210716未来智能实验室收录资料
  8. 揭秘美国空军如何用AI技术提升“战斗力”
  9. 关于机器学习实战,那些教科书里学不到的12个“民间智慧”
  10. 任正非亲自指导下拍的视频,事关中国的未来