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());
            }
        }
    
        
    }
  • 相关阅读:
    linux之卸载软件
    linux之挂载硬盘
    windows MySQL 5+ 服务手动安装
    深刻理解Python中的元类(metaclass)
    Python_cmd的各种实现方法及优劣(subprocess.Popen, os.system和commands.getstatusoutput)
    WSGI、flup、fastcgi、web.py的关系
    Windows下python环境变量配置
    External file changes sync may be slow: Project files cannot be watched (are they under network mount?)
    as。 对象和数组
    为什么for不能有序遍历数组的所有元素?(Array的设计原理)
  • 原文地址:https://www.cnblogs.com/stono/p/9013558.html
Copyright © 2011-2022 走看看