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>()));
    }
  • 相关阅读:
    支付
    mui自定义事件带参返回mui.back()
    tomcat+nginx反向代理(实现一个服务器,一个ip共用80端口)
    mui.back()返回刷新功能
    WiFi(网络)调试Android手机
    mysql获取外键, 根据数据库名和表名获取表所对应的所有外键
    @RequestBody接收json字符串,自动将日期字符串转换为java.util.Date
    使用MySQLWorkBench绘制ER图
    jpa动态分页查找
    displaytag的Excel导出实践
  • 原文地址:https://www.cnblogs.com/zhangfengshi/p/9224268.html
Copyright © 2011-2022 走看看