25,988
社区成员




package com.sq.system.util.easy;
import java.util.HashMap;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* 线程池管理类
* @author 粗人
* @date 2016-06-06
* @version 1.0_160606
*/
public class EasyThread {
//初始值、最大值、保持时间、单位、队列类型
static ThreadPoolExecutor executor = new ThreadPoolExecutor(30, 200, 200, TimeUnit.MILLISECONDS,new ArrayBlockingQueue<Runnable>(30));
/**
* 查看线程池列表状态
* @return
*/
public static HashMap<String,String> getPoolStatus()
{
HashMap<String,String> map = new HashMap<String,String>();
map.put("CorePoolSize", "初始线程: "+executor.getCorePoolSize()+"");
map.put("MaximumPoolSize", "最大线程: "+executor.getMaximumPoolSize()+"");
map.put("PoolSize", "线程池: "+executor.getPoolSize()+"");
map.put("QueueSize", "队列: "+executor.getQueue().size()+"");
map.put("CompletedTaskCount", "已完成: "+executor.getCompletedTaskCount()+"");
return map;
}
/**
* 重新设置线程池
* @param initPoolSize 初始线程池大小
* @param maxPoolSize 最大线程池大小
* @param timeout 线程超时时间毫秒
*/
public static void setPoolParam(int initPoolSize,int maxPoolSize,int timeout )
{
executor = new ThreadPoolExecutor(initPoolSize, maxPoolSize, timeout, TimeUnit.MILLISECONDS,new ArrayBlockingQueue<Runnable>(initPoolSize));
}
/**
* 添加线程
* @param object
* @return
*/
public static boolean addTask(Thread object)
{
boolean result = false;
try
{
executor.execute(object);
result = true;
}catch(RejectedExecutionException e){
result = false;
}
return result;
}
/**
* 关闭线程池
*/
public static void shutdown() {
executor.shutdown();
}
}