博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cachedThreadPool缓存线程池
阅读量:4985 次
发布时间:2019-06-12

本文共 3470 字,大约阅读时间需要 11 分钟。

package com.loan.modules.common.util;import java.util.concurrent.BlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;@SuppressWarnings("all")public class ETLThreadPool {        private static ThreadPoolExecutor etlExectutor = null;    /**     * 功能:得到线程池实例     * @param corePoolSize 线程池维护线程的最少数量     * @param maximumPoolSize 线程池维护线程的最大数量     * @param keepAliveTime 线程池维护线程所允许的空闲时间     * @param unit 线程池维护线程所允许的空闲时间的单位     * @param workQueue 线程池所使用的缓冲队列     * @return     */    @SuppressWarnings("unchecked")    public static ThreadPoolExecutor getThreadPool(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue) {        synchronized (ETLThreadPool.class) {            if (etlExectutor == null) {                                etlExectutor = createExecutor(                    corePoolSize,                    maximumPoolSize,                    keepAliveTime,                    unit,                    workQueue);            }        }                return etlExectutor;    }    /**     * 功能:创建ThreadPoolExecutor实例;     * @param corePoolSize:核心线程数量     * @param maximumPoolSize:最大线程数量     * @param keepAliveTime:线程空闲保持时间     * @param unit:时间单位     * @param workQueue:工作队列     * @param handler:旧任务抛弃策略     * @return     * ThreadPoolExecutor     */    @SuppressWarnings("unchecked")    private static ThreadPoolExecutor createExecutor(        int corePoolSize,        int maximumPoolSize,        long keepAliveTime,        TimeUnit unit,        BlockingQueue workQueue) {        etlExectutor =            new ThreadPoolExecutor(                corePoolSize,                maximumPoolSize,                keepAliveTime,                unit,                workQueue);        return etlExectutor;    }}
package com.loan.modules;import java.util.Queue;import java.util.concurrent.CountDownLatch;import java.util.concurrent.LinkedBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;import com.loan.modules.common.util.ETLThreadPool;public class test {    private static ThreadPoolExecutor cachedThreadPool = ETLThreadPool.getThreadPool(8,10, 3000, TimeUnit.SECONDS, new LinkedBlockingQueue
(20000)); public static void main(String[] args) throws InterruptedException { Thred1(); Thred2(); Thred1(); } public static void Thred1() throws InterruptedException{ int total = 30; final CountDownLatch countDownLatch = new CountDownLatch(total); for (int i = 0; i < total; i++) { Thred1 t1 = new Thred1(i,countDownLatch); cachedThreadPool.execute(t1); } countDownLatch.await();// 等待所有子线程执行完 } public static void Thred2() throws InterruptedException{ int total = 5; final CountDownLatch countDownLatch = new CountDownLatch(total); for (int i = 0; i < total; i++) { cachedThreadPool.execute(new Runnable() { @Override public void run() { // 批量向instinct系统发送进件信息 // 计数器 减一 System.out.println("2"); countDownLatch.countDown(); } }); } countDownLatch.await();// 等待所有子线程执行完 } private synchronized static int getQueueSize(Queue queue) { return queue.size(); }}

 

转载于:https://www.cnblogs.com/yy123/p/6676988.html

你可能感兴趣的文章
数据库 join
查看>>
AES加密工具类[亲测可用]
查看>>
方法区
查看>>
Django-----ORM
查看>>
ARCGIS部分刷新
查看>>
发 零 食
查看>>
poj3613:Cow Relays(倍增优化+矩阵乘法floyd+快速幂)
查看>>
洛谷P1886 滑动窗口
查看>>
Shell编程(二)Bash中调用Python
查看>>
主动与被动监控 拓扑图组合图 自定义监控
查看>>
SQL总结(一)基本查询
查看>>
PDF分割--可脱离python环境执行,可传参数,可弹窗的PC端小工具
查看>>
cas-client-core单点登录排除不需要拦截的URL
查看>>
OCR技术浅探 : 文字定位和文本切割(2)
查看>>
jmeter集合点
查看>>
Java类代码块执行顺序
查看>>
克鲁斯卡尔(模板题)
查看>>
汉字转拼音
查看>>
Python中Web框架编写学习心得
查看>>
dataTable/dataSet转换成Json格式
查看>>