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>()));
    }
  • 相关阅读:
    操作系统_3:linux教程列表
    MongoEngine 查询语法
    Spark_1:教程索引
    软件需求十步走之阅读笔记03
    软件需求十步走之阅读笔记02
    软件需求十步走之阅读笔记01
    暑期学习四
    暑期学习三
    暑期学习二
    暑期学习一
  • 原文地址:https://www.cnblogs.com/zhangfengshi/p/9224268.html
Copyright © 2011-2022 走看看