zoukankan      html  css  js  c++  java
  • 2.3.5使用原子类进行i++操作

    除了在i++操作时使用synchronized关键字实现同步外,还可以使用AtomicInteger原子类进行实现

    原子操作时不可分割的整体,没有其他线程能够中断或检查正在原子操作的变量,一个原子类型就是一个原子操作的可用类型,他可以在没有锁的情况下,做到线程安全

    package com.cky.thread;
    
    import java.util.concurrent.atomic.AtomicInteger;
    
    /**
     * Created by edison on 2017/12/9.
     */
    public class AddCountThread extends Thread{
        private AtomicInteger count = new AtomicInteger(0);
        @Override
        public void run() {
            super.run();
            for (int i = 0; i < 10000; i++) {
                System.out.println(count.incrementAndGet());
            }
        }
    }
    package com.cky.test;
    
    import com.cky.thread.AddCountThread;
    
    /**
     * Created by edison on 2017/12/9.
     */
    public class Run {
        public static void main(String[] args) {
            AddCountThread addCountThread = new AddCountThread();
            Thread t1 = new Thread(addCountThread);
            t1.start();
            Thread t2 = new Thread(addCountThread);
            t2.start();
            Thread t3 = new Thread(addCountThread);
            t3.start();
            Thread t4 = new Thread(addCountThread);
            t4.start();
            Thread t5 = new Thread(addCountThread);
            t5.start();
        }
    }
    49993
    49994
    49995
    49996
    49997
    49998
    49999
    50000

    程序运行结果累加到了50000

  • 相关阅读:
    elasticsearch之python操作
    Elasticsearch之性能优化
    Elasticsearch之基本使用
    Redis主从哨兵集群搭建
    Docker Swarm集群
    Elasticsearch之权限验证(Basic)
    docker之网络与数据管理
    docker之可视化工具
    基于Github gist的代码片段管理工具Lepton
    Redis工具之redis_rdb_tools
  • 原文地址:https://www.cnblogs.com/edison20161121/p/8011215.html
Copyright © 2011-2022 走看看