Java线程--Atomic原子类使用

2023-05-26,,

原创:转载需注明原创地址 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 + "进不去车间, 因为里面有人了");
}
}
}

打印如下:

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

Java线程--Atomic原子类使用的相关教程结束。

《Java线程--Atomic原子类使用.doc》

下载本文的Word格式文档,以方便收藏与打印。