zoukankan      html  css  js  c++  java
  • J.U.C关于Execute实现

    JAVASE5的Execute将为你管理Thread对象,是启动任务的优选方案
    
    /**
    *
    newCachedThreadPool
    在程序的执行过程中通常会创建于所需任务相同数量的线程即可以达到Integer.Max_values量 固使用不当容易引起内存溢出
    */
    ExecutorService executorService = Executors.newCachedThreadPool();
    public static ExecutorService newCachedThreadPool() {
    return new ThreadPoolExecutor(0, Integer.MAX_VALUE,60L, TimeUnit.SECONDS,new SynchronousQueue<Runnable>()); }
    ==========================
    newFixedThreadPool==============================================
    /**
    *创建指定线程数的线程;
    此方法阻塞队列的容量没有限制;允许请求的队列长度为Integer.MAX_VALUE,可能会堆积大量请求,造成OOM
    */
    ExecutorService executorService = Executors.newFixedThreadPool(2);// 有限线程数队列
    public static ExecutorService newFixedThreadPool(int nThreads) 
    { 
        return new ThreadPoolExecutor(nThreads, nThreads, 19 20 0L, TimeUnit.MILLISECONDS,  new LinkedBlockingQueue<Runnable>()); 
    }

    public
    LinkedBlockingQueue(){
    this(Integer.MAX_VALUE);//创建指定容量的链表队列
    }
    
    
    ===============================newSingleThreadExecutor==============================

    /**

    *线程数量为1的FixedThreadPool 每个任务将进入队列直到上一个任务处理完成,使用同一个线程处理<br>

    LinkedBlockingQueue队列实现也是队列长度为Integer.MAX_VALUE所以也容易引起堆积大量请求,造成OOM

    */

      ExecutorService executorService = Executors.newSingleThreadExecutor();


    public static ExecutorService newSingleThreadExecutor() {

    return new FinalizableDelegatedExecutorService (new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()));
    }
  • 相关阅读:
    KMP算法与字符串匹配问题
    贪婪算法(贪心算法)
    普里姆算法(Prim)与最小生成树问题
    克鲁斯卡尔算法(Kruskal算法)与最小生成树问题
    Dijkstra算法与最短路径问题
    SpringCloud(十一)使用actuator和dashborad、turbine对微服务进行监控
    博客美化——页面白天黑夜切换
    Spring5学习笔记——day01
    Mybatis学习笔记——day06
    Mybatis学习笔记——day05
  • 原文地址:https://www.cnblogs.com/zhangfengshi/p/9224268.html
Copyright © 2011-2022 走看看