首页 > 其他 > 详细

第一章、高并发引发的问题

时间:2019-07-21 19:18:14      阅读:59      评论:0      收藏:0      [点我收藏+]
示例模拟10000次请求,每次并发数为100,每次请求,计数器加1,最后输出计数器值。
上代码:

package concurrent;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;

/**
 * @Auther:zhl
 * @Date:2019/7/13
 * @Description: 并发测试
 */
public class ConcurrentSample {
    //并发线程数量
    private static int users = 100;
    //访问次数
    private static int count = 10000;
    //访问总量
    private static int number = 0;

    public static void main(String[] args) {
        //定义线程池
        ExecutorService executorService = Executors.newCachedThreadPool();
        //并发量
        Semaphore semaphore = new Semaphore(users);
        for (int i = 0; i < count; i++) {
            executorService.execute(() -> {
                try {
                    semaphore.acquire();
                    add();
                    semaphore.release();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
        }
        try {
            Thread.sleep(3000);
        } catch (Exception e) {
            e.printStackTrace();
        }
        executorService.shutdown();
        System.out.println(number);
    }
    public static void add() {
        number++;
    }
}

计数器:9997
计数器:10000
计数器:9997
每次输出结果不一致,这都是并发导致的

第一章、高并发引发的问题

原文:https://blog.51cto.com/11147669/2422186

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!