This commit is contained in:
2025-11-18 15:12:24 +08:00
parent c173c425ce
commit a7d2035e70
1361 changed files with 367452 additions and 0 deletions
@@ -0,0 +1,74 @@
package cn.shangyu.gdxzExpert.manager;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.ThreadPoolExecutor.AbortPolicy;
import java.util.concurrent.TimeUnit;
/**
*
* ThreadManager.java
* @author gaofei
* @date 2015-8-31 下午3:53:27
* Copyright (C) 2015 河南商宇科技有限公司
*
* 功能说明:线程池管理
*/
public class ThreadManager {
private static ThreadProxyPool threadProxyPool;
private static Object object = new Object();
public static ThreadProxyPool getThreadProxyPool(){
synchronized (object) {
if(threadProxyPool == null){
threadProxyPool = new ThreadProxyPool(10,10, 5L);
}
return threadProxyPool;
}
}
public static class ThreadProxyPool{
private int corePoolSize;
private int maximumPoolSize;
private long keepAliveTime;
private ThreadPoolExecutor threadPoolExecutor;
public ThreadProxyPool(int corePoolSize,int maximumPoolSize,long keepAliveTime) {
this.corePoolSize = corePoolSize;
this.maximumPoolSize = maximumPoolSize;
this.keepAliveTime = keepAliveTime;
}
//在子线程中执行任务的方法
public void execute(Runnable runnable){
if(runnable == null){
return ;
}
if(threadPoolExecutor==null || threadPoolExecutor.isShutdown()){
threadPoolExecutor = new ThreadPoolExecutor(
//核心线程数
corePoolSize,
//最大线程数
maximumPoolSize,
//线程存活时间
keepAliveTime,
//存活时间单位
TimeUnit.MILLISECONDS,
//存放任务的队列
new LinkedBlockingQueue<Runnable>(),
//创建线程工程
Executors.defaultThreadFactory(),
//异常处理方式
new AbortPolicy());
}
threadPoolExecutor.execute(runnable);
}
public void cancel(Runnable runnable){
if(runnable!=null && threadPoolExecutor!=null && !threadPoolExecutor.isShutdown()){
//从线程池中将任务移除出去
threadPoolExecutor.getQueue().remove(runnable);
}
}
}
}