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());
            }
        }
    
        
    }
  • 相关阅读:
    mysql 中索引的限制
    lvm扩展记录
    转载:权威GIS类数据网站汇总
    转载:文件系统inodes使用率过高问题处理
    转载: k8s--pod的状态为evicted
    转载:k8s更新策略
    转载:Tomcat的JVM内存溢出解决方法
    软件推荐
    U盘安装Centos7 问题记录
    转载:Linux下查找文件
  • 原文地址:https://www.cnblogs.com/stono/p/9013558.html
Copyright © 2011-2022 走看看