zoukankan      html  css  js  c++  java
  • Java线程--Atomic原子类使用

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

    打印如下:

    小刚想进来车间, 看看里面有没有人
    小刚进来车间了, 里面没人呢
    小刚开始奋力工作了.....
    小明想进来车间, 看看里面有没有人
    小明进不去车间, 因为里面有人了
    小刚工作完了, 走了
  • 相关阅读:
    第六周作业
    第五周作业
    2019春第四周作业软件
    2019年春季学期第三周作业
    2019年春季学期第二周作业(文件指针)
    7-2 求最大值及其下标 (20 分)
    7-1 查找整数 (10 分)
    7-1 抓老鼠啊~亏了还是赚了? (20 分)
    秋季学期学习总结
    第6周作业
  • 原文地址:https://www.cnblogs.com/fanerwei222/p/11871241.html
Copyright © 2011-2022 走看看