zoukankan      html  css  js  c++  java
  • Java-ThreadPool线程池总结

    1 线程池的方法

    执行长期任务性能好,创建一个线程池,一池有N个固定的线程,可以控制线程最大并发数,有固定线程数的线程池

    ExecutorService threadPool = Executors.newFixedThreadPool(N);

    单个任务执行,它只会使用单个工作线程,一池一线程

    ExecutorService threadPool = Executors.newSingleThreadExecutor();

    执行短期异步任务,可缓存线程池,线程池根据需要创建新线程,但在先前构造的线程可以复用,也可灵活回收空闲的线程,可扩容的池

    ExecutorService threadPool = Executors.newCachedThreadPool();

    周期性线程池;支持定时及周期性任务执行

    ExecutorService threadPool = Executors.newScheduledThreadPool();

    (1) newFixedThreadPool

    可以控制线程最大并发数的线程池:

    public class FixedThreadPool {
    
        private static AtomicInteger num = new AtomicInteger(0);
    
        private static ExecutorService executorService = Executors.newFixedThreadPool(2);
    
        public static void main(String[] args) {
            countSum c= new countSum();
            //将coutSum作为Task,submit至线程池
            for (int i = 0; i < 2; i++) {
                executorService.submit(c);
            }
            //Task执行完成后关闭
            executorService.shutdown();
        }
    
        static class countSum implements Runnable{
            @Override
            public void run() {
                for (int i = 0; i < 500; i++) {
                    try{
                        System.out.println("Thread - "+Thread.currentThread().getName()+" count= "+ num.getAndIncrement());
                        Thread.sleep(100);
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
            }
        }
    }

    结果:

    https://www.cnblogs.com/torima/p/15159336.html

    故乡明
  • 相关阅读:
    windows下 php5.3如何连接mssql
    ie 兼容性
    windows 版Tomcat 7.0的配置
    数据库备份
    PHP实现通过经纬度计算距离
    linux内核升级(ubuntu12.04从3.13.0升级到3.4.0 )
    详解Linux Initrd
    基于stm32的can总线彻底研究
    CAN控制器-配置过滤器
    recv send 阻塞和非阻塞
  • 原文地址:https://www.cnblogs.com/luweiweicode/p/15205254.html
Copyright © 2011-2022 走看看