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

    故乡明
  • 相关阅读:
    Linux Kernel USB 子系统(1)
    折腾 Gnome3
    2011年06月08日
    xelatex 果然好用
    倍受打击
    长到40岁学到的41件事
    autocompletemode + flyspellmode
    The Linux Staging Tree, what it is and is not.
    如何选择开源许可证?
    Use emacs &amp; Graphviz to plot data structure
  • 原文地址:https://www.cnblogs.com/luweiweicode/p/15205254.html
Copyright © 2011-2022 走看看