zoukankan      html  css  js  c++  java
  • 不同连接池在大量线程需求的情况下都分配了多少线程

    不同连接池在大量线程需求的情况下都分配了多少线程

    Executors.newCachedThreadPool(); 会有7万多个;

    package com.stono.thread2;
    
    import java.lang.management.ManagementFactory;
    import java.lang.management.ThreadInfo;
    import java.lang.management.ThreadMXBean;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.TimeUnit;
    
    public class ThreadPoolNewCached  {
    
        public static void main(String[] args) {
            ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
            for (int i = 0; i < 100000; i++) {
                cachedThreadPool.execute(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            TimeUnit.SECONDS.sleep(10);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }    
                    }
                });
            }
            ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
            ThreadInfo[] dumpAllThreads = threadMXBean.dumpAllThreads(false, false);
            System.out.println(dumpAllThreads.length);
            for (ThreadInfo threadInfo : dumpAllThreads) {
    //            System.out.println(threadInfo.getThreadName());
            }
        }
    
        
    }

    Executors.newScheduledThreadPool(5); 一共会有10个

    package com.stono.thread2;
    
    import java.lang.management.ManagementFactory;
    import java.lang.management.ThreadInfo;
    import java.lang.management.ThreadMXBean;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ScheduledExecutorService;
    import java.util.concurrent.TimeUnit;
    
    public class ThreadPoolNewSchedule  {
    
        public static void main(String[] args) {
            ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
            for (int i = 0; i < 100000; i++) {
                scheduledThreadPool.execute(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            TimeUnit.SECONDS.sleep(10);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }    
                    }
                });
            }
            ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
            ThreadInfo[] dumpAllThreads = threadMXBean.dumpAllThreads(false, false);
            System.out.println(dumpAllThreads.length);
            for (ThreadInfo threadInfo : dumpAllThreads) {
                System.out.println(threadInfo.getThreadName());
            }
        }
    
        
    }

    Executors.newSingleThreadExecutor(); 一共会有6个

    package com.stono.thread2;
    
    import java.lang.management.ManagementFactory;
    import java.lang.management.ThreadInfo;
    import java.lang.management.ThreadMXBean;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.TimeUnit;
    
    public class ThreadPoolSingle  {
    
        public static void main(String[] args) {
            ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
            for (int i = 0; i < 100000; i++) {
                singleThreadExecutor.execute(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            TimeUnit.SECONDS.sleep(10);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }    
                    }
                });
            }
            ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
            ThreadInfo[] dumpAllThreads = threadMXBean.dumpAllThreads(false, false);
            System.out.println(dumpAllThreads.length);
            for (ThreadInfo threadInfo : dumpAllThreads) {
                System.out.println(threadInfo.getThreadName());
            }
        }
    
        
    }

    Executors.newFixedThreadPool(3); 一共会有8个

    package com.stono.thread2;
    
    import java.lang.management.ManagementFactory;
    import java.lang.management.ThreadInfo;
    import java.lang.management.ThreadMXBean;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.TimeUnit;
    
    public class ThreadPoolFixed  {
    
        public static void main(String[] args) {
            ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);
            for (int i = 0; i < 100000; i++) {
                fixedThreadPool.execute(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            TimeUnit.SECONDS.sleep(10);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }    
                    }
                });
            }
            ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
            ThreadInfo[] dumpAllThreads = threadMXBean.dumpAllThreads(false, false);
            System.out.println(dumpAllThreads.length);
            for (ThreadInfo threadInfo : dumpAllThreads) {
                System.out.println(threadInfo.getThreadName());
            }
        }
    
        
    }
  • 相关阅读:
    【LeetCode】204
    【LeetCode】231
    【LeetCode】58
    解决error104 socket error问题
    爬虫问题
    80端口被system占用的问题
    Linux命令行下批量重命名文件名为数字索引编号(0~N.xxx)的方法
    [转]利用excel进行线性规划求解
    python——时间与时间戳之间的转换
    最全中文停用词表整理(1893个)
  • 原文地址:https://www.cnblogs.com/stono/p/9013558.html
Copyright © 2011-2022 走看看