原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11871241.html

Java线程--Atomic原子类使用

package concurrent.atomic;

/**
* 原子类测试类
*/
public class MainAtomic {
public static void main(String[] args) {
Worker worker1 = new Worker("小明");
Worker worker2 = new Worker("小刚");
new Thread(worker1).start();
new Thread(worker2).start();
}
}
package concurrent.atomic;

import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean; /**
* 工作线程
*/
public class Worker implements Runnable { /**
* 同时只有一个工人能进入车间
*/
private static AtomicBoolean existsOne = new AtomicBoolean(false);
private String workName; public Worker(String workName){
this.workName = workName;
} @Override
public void run() {
    System.out.println(workName + "想进来车间, 看看里面有没有人");
if (existsOne.compareAndSet(false, true)) {
System.out.println(workName + "进来车间了, 里面没人呢");
try {
System.out.println(workName + "开始奋力工作了.....");
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(workName + "工作完了, 走了");
/**
* 重置false状态
*/
existsOne.set(false);
} else {
System.out.println(workName + "进不去车间, 因为里面有人了");
}
}
}

打印如下:

小刚想进来车间, 看看里面有没有人
小刚进来车间了, 里面没人呢
小刚开始奋力工作了.....
小明想进来车间, 看看里面有没有人
小明进不去车间, 因为里面有人了
小刚工作完了, 走了

最新文章

  1. 关于unity碰撞检测器的用法
  2. 转发-UI基础教程 – 原生App切图的那些事儿
  3. linux查看负载
  4. OpenCascade Matrix
  5. JAVA 设计模式 命令模式
  6. Web app 的性能瓶颈与性能调优方法
  7. 【转】IOS --- OC与Swift混编
  8. MSSQLSERVER数据库- 配置数据库邮件配置的操作过程
  9. CircleImageView 圆形图片头像实现
  10. 如何判断页面是qq浏览器还是微信浏览器打开
  11. x64系统的判断和x64下文件和注册表访问的重定向——补记
  12. 浅析java程序的执行过程
  13. C语言开发的思考
  14. “数学口袋精灵”第二个Sprint计划(第六~八天)
  15. form表单提交onclick和onsubmit
  16. python递归的例子
  17. mysql命令行导入结构化数据
  18. js的sort()方法
  19. 脚本不得关闭非脚本打开的窗口。Scripts may close only the windows that were opened by it
  20. Idea代码可视化插件

热门文章

  1. dart系列之:dart代码最佳实践
  2. python 之 pip、pypdf2 安装与卸载
  3. 初识python: 递归函数
  4. Cannot uninstall 'pyparsing'. It is a distutils installed project
  5. 无聊的周末用Java写个扫雷小游戏
  6. PHP靶场-bWAPP环境搭建
  7. orleans集群及负载均衡实现
  8. 我以订披萨为例,给女朋友详细讲了Java设计模式的3种工厂模式
  9. Windows系统安装和office版本兼容
  10. Qt之进入和出去和关闭事件