zoukankan      html  css  js  c++  java
  • 创建安全的ThreadPoolExecutor线程池


            LinkedBlockingQueue linkedBlockingQueue = new LinkedBlockingQueue<String>(1024);
            ThreadFactory THREAD_FACTORY = new ThreadFactoryBuilder().setNameFormat("job-pool-%d").build();
            ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(Runtime.getRuntime().availableProcessors()*2,
                    Runtime.getRuntime().availableProcessors()*2,
                    0,
                    TimeUnit.SECONDS,
                    linkedBlockingQueue,
                    THREAD_FACTORY,
                    new ThreadPoolExecutor.AbortPolicy());
            CountDownLatch countDownLatch = new CountDownLatch(list.size());
            try{
                for (Object object : list) {

                    //类要实现Callable接口
                    Future<Integer> future = threadPoolExecutor.submit(类);
                    resultList.add(future);
                    countDownLatch.countDown();

                   //循环判断queue中的线程大于1000,则等待1秒,直到小于1000位置,防止进行线程被拒绝
                    while(linkedBlockingQueue.size()>1000) {
                        Thread.sleep(1000);
                        System.out.println("暂停1秒");
                    }
                }

                //等待全部完成,在继续操作
                countDownLatch.await();

                //关闭线程池(不在接收新的线程)
                threadPoolExecutor.shutdown();

             }catch (Exception ex){

                //出现异常后,关闭线程池
                threadPoolExecutor.shutdownNow();
                ex.printStackTrace();
             }
            }finally {

                //最终判断线程池是否为空,进行关闭
                if(threadPoolExecutor!=null) {
                    threadPoolExecutor.shutdownNow();
                }
            }

    收藏文章数量从多到少与“把书读薄”是一个道理
  • 相关阅读:
    flowable camunda activiti 功能对比
    activiti与flowable的区别
    工作流框架flowable6与activiti7的选择
    NFS服务的简介及常见故障解决方法
    yum命令详解
    怎么把Chrome网页背景变成黑色模式
    时序数据库InfluxDB 2.0 alpha 发布:主推新的Flux查询语言,TICK栈将成为整体
    influxDB 2.0安装及使用说明
    InfluxDB和MySQL的读写对比测试
    时序数据库特点与对比
  • 原文地址:https://www.cnblogs.com/use-D/p/8797432.html
Copyright © 2011-2022 走看看