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 驱动了。。
    Spring Boot + MyBatis + MySQL 实现读写分离
    多线程环境下,HashMap 为什么会出现死循环?
    亿级流量架构怎么做资源隔离?写得太好了!
    refdeveloptools for developers
    how to setup ppc2003 or smartphone 2003 to connect to internet
    转载:一篇java与C#的对比文章(英文)
    在sqlexpress中添加DB和在sql analyzer中操作DB.
    windows 2003下配置IIS6为iis5方式的隔离模式运行
    开源的pop3和smtp组件(支持中文及SSL)
  • 原文地址:https://www.cnblogs.com/stono/p/9013558.html
Copyright © 2011-2022 走看看