• 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 + "进不去车间, 因为里面有人了"); } } }

    打印如下:

    小刚想进来车间, 看看里面有没有人
    小刚进来车间了, 里面没人呢
    小刚开始奋力工作了.....
    小明想进来车间, 看看里面有没有人
    小明进不去车间, 因为里面有人了
    小刚工作完了, 走了
  • 相关阅读:
    灾后重建
    ZYN砍树
    聪聪可可
    GirlCat
    图表控件== 百度 echarts的入门学习
    图表控件的学习===》hightChart 和 Chartjs的使用
    拆分订单===初
    net 的单元测试 初学
    vue js 用nodejs的依赖包 --2016-08-23
    后台框架--HUI 的学习跟使用1
  • 原文地址:https://www.cnblogs.com/fanerwei222/p/11871241.html
Copyright © 2020-2023  润新知