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>()));
    }
  • 相关阅读:
    实验四(作业一:字符串加密)
    实验三“类和对象”动手动脑
    实验三“类和对象”课后作业(追踪已经创建了几个对象)
    递归实验动手动脑题目
    ("X+Y="+X+Y)与(X+Y+"=X+Y")
    Linq To Xml
    代码优先-Code First
    restFul接口设计规范
    四: 使用vue搭建网站前端页面
    三: vue组件开发及自动化工具vue-cli
  • 原文地址:https://www.cnblogs.com/zhangfengshi/p/9224268.html
Copyright © 2011-2022 走看看