线程池参数设计

public class ThreadPoolSelfDefinition2Test {

    private static final ExecutorService threadPool = new ThreadPoolExecutor(
            20,
            200,
            0L,
            TimeUnit.MILLISECONDS,
            new LinkedBlockingQueue<>(2000),
            new ThreadFactoryBuilder().setNameFormat("demo-pool-%d").build(),
            (runnable, threadPoolExecutor) -> System.out.println("runnable:" + runnable.toString() + ",threadPoolExecutor:" + threadPoolExecutor.toString())
    );


    public static void main(String[] args) {

        //200 qps 执行 100s;
        for (int j = 0; j++ < 100; ) {

            for (int i = 0; i++ < 200; ) {
                threadPool.execute(() -> runBizLogic());
            }

            try {
                int threadCount = ((ThreadPoolExecutor) threadPool).getActiveCount();
                System.out.println("--------第:" + j + "s, --------当前活跃的线程数:" + threadCount);
                TimeUnit.MILLISECONDS.sleep(1000L);

            } catch (InterruptedException e) {
            }

        }

        threadPool.shutdown();
    }

    //每个任务响应时间约100ms
    private static void runBizLogic() {
        try {
            TimeUnit.MILLISECONDS.sleep(100L);
        } catch (InterruptedException e) {

        }
        System.out.println(Thread.currentThread().getName() + ":runBizLogic");
    }

}

qps 3000
每个任务响应时间9999 100ms内, (可计算tps 30000)

线程池设计:
每个线程1s可以处理10个任务,至少需要300个线程
队列保持10s的堆积能力,10s*3000qps = 30000
服务器部署10台:
则每台机器需要至少30个线程,对列长度3000;


qps 1000
每个任务响应时间9999 500ms内, (可计算tps 2000)

线程池设计:
每个线程1s可以处理2个任务,至少需要500个线程
队列保持10s的堆积能力,10s*1000qps = 10000
服务器部署10台:
则每台机器需要至少50个线程,对列长度1000;


qps 200
每个任务响应时间9999 100ms内, (可计算tps 2000)

线程池设计:
每个线程1s可以处理10个任务,至少需要20个线程
队列保持10s的堆积能力,10s*200qps = 2000
服务器部署1台:
则每台机器需要至少20个线程,对列长度2000;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值