zoukankan      html  css  js  c++  java
  • 使用CountDownLatch模拟高并发场景

    import java.util.concurrent.CountDownLatch;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.atomic.AtomicInteger;
    
    public class IncrTest {
        public static void concurrenceTest() {
            /**
             * 模拟高并发情况代码
             */
            final AtomicInteger atomicInteger = new AtomicInteger(0);
            final CountDownLatch countDownLatch = new CountDownLatch(1000); // 相当于计数器,当所有都准备好了,再一起执行,模仿多并发,保证并发量
            final CountDownLatch countDownLatch2 = new CountDownLatch(1000); // 保证所有线程执行完了再打印atomicInteger的值
            ExecutorService executorService = Executors.newFixedThreadPool(10);
            try {
                for (int i = 0; i < 1000; i++) {
                    executorService.submit(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                countDownLatch.await(); //一直阻塞当前线程,直到计时器的值为0,保证同时并发
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                            //每个线程增加1000次,每次加1
                            for (int j = 0; j < 1000; j++) {
                                atomicInteger.incrementAndGet();
                            }
                            countDownLatch2.countDown();
                        }
                    });
                    countDownLatch.countDown();
                }
    
                countDownLatch2.await();// 保证所有线程执行完
                System.out.println(atomicInteger);
                executorService.shutdown();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) throws InterruptedException {
            concurrenceTest();
        }
    }
  • 相关阅读:
    力拓题目 5-8-575,657,707,771
    力拓题目1-4-7,217,344,557
    解码,编码,文件的基本操作
    集合类型内置方法和拷贝浅拷贝深拷贝
    列表元祖字典内置方法
    数字类型内置方法
    字符串类型内置方法
    hdu2262 高斯消元
    hdu1757 构造矩阵
    poj1222 高斯消元
  • 原文地址:https://www.cnblogs.com/xubiao/p/7785042.html
Copyright © 2011-2022 走看看