Java线程--Atomic原子类使用
2024-09-04 11:28:34
原创:转载需注明原创地址 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 + "进不去车间, 因为里面有人了");
}
}
}
打印如下:
小刚想进来车间, 看看里面有没有人
小刚进来车间了, 里面没人呢
小刚开始奋力工作了.....
小明想进来车间, 看看里面有没有人
小明进不去车间, 因为里面有人了
小刚工作完了, 走了
最新文章
- 关于unity碰撞检测器的用法
- 转发-UI基础教程 – 原生App切图的那些事儿
- linux查看负载
- OpenCascade Matrix
- JAVA 设计模式 命令模式
- Web app 的性能瓶颈与性能调优方法
- 【转】IOS --- OC与Swift混编
- MSSQLSERVER数据库- 配置数据库邮件配置的操作过程
- CircleImageView 圆形图片头像实现
- 如何判断页面是qq浏览器还是微信浏览器打开
- x64系统的判断和x64下文件和注册表访问的重定向——补记
- 浅析java程序的执行过程
- C语言开发的思考
- “数学口袋精灵”第二个Sprint计划(第六~八天)
- form表单提交onclick和onsubmit
- python递归的例子
- mysql命令行导入结构化数据
- js的sort()方法
- 脚本不得关闭非脚本打开的窗口。Scripts may close only the windows that were opened by it
- Idea代码可视化插件