public class SearchLogPool {
// 线程池维护线程的最少数量
private final static int CORE_POOL_SIZE = 5;
// 线程池维护线程的最大数量
private final static int MAX_POOL_SIZE = 20;
// 线程池维护线程所允许的空闲时间
private final static int KEEP_ALIVE_TIME = 180;
// 线程池所使用的缓冲队列大小
private final static int WORK_QUEUE_SIZE = 10000;
// 请求缓冲队列
public Queue<Runnable> msgQueue = new LinkedList<Runnable>();
private static SearchLogPool manager = null;
// 访问请求Request缓存的调度线程
final Runnable accessBufferThread = new Runnable() {
public void run() {
// 查看是否有待定请求,如果有,则添加到线程池中
if (hasMoreAcquire()) {
threadPool.execute(msgQueue.poll());
}
}
};
// handler - 由于超出线程范围和队列容量而使执行被阻塞时所使用的处理程序
final RejectedExecutionHandler handler = new RejectedExecutionHandler() {
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
msgQueue.offer(r);
}
};
// 管理线程池
@SuppressWarnings("unchecked")
final ThreadPoolExecutor threadPool = new ThreadPoolExecutor(
CORE_POOL_SIZE, MAX_POOL_SIZE, KEEP_ALIVE_TIME, TimeUnit.SECONDS,
new ArrayBlockingQueue(WORK_QUEUE_SIZE), this.handler);
/**
* 添加任务
*
* @param task
*/
public void addTask(Runnable task) {
threadPool.execute(task);
}
/**
* 实例化线程池
*
* @param key
* @return
*/
public static synchronized SearchLogPool getInstance() {
if (manager == null) {
System.out.println("实例化线程池~~~~~~~~~~~~~~~~~~~~~~~~~~");
manager = new SearchLogPool();
}
return manager;
}
/**
* 禁止实例化
*/
private SearchLogPool() {
}
private boolean hasMoreAcquire() {
return !msgQueue.isEmpty();
}
}
分享到:
相关推荐
这是一个使用C++实现的简易线程池.zip这是一个使用C++实现的简易线程池.zip这是一个使用C++实现的简易线程池.zip这是一个使用C++实现的简易线程池.zip这是一个使用C++实现的简易线程池.zip这是一个使用C++实现的简易...
这是一个简单线程池的实现,虽然有很多bug,但是能够简单地实现线程池。
简易的C++11线程池实现,线程池为固定方式,后面会新增非固定模式。
简单的线程池程序+中文文档 包结构: com.tangkai.threadpool --SimpleThread.java 工作线程 --TestThreadPool.java 程序入口 --ThreadPoolManager.java 线程池管理类
C语言实现的简单线程池
C++编写的简易线程池,实现了线程安全,需要的朋友可以尝试一下
C++线程池的简单设计与实现,使用GCC编译,可自己改写为vs编译,使用pthread线程库和curl网络库。
简单线程池的实现。提供添加删除线程,执行任务
易语言简易线程池的实现。 ——V雪落有声V原创。转载请保留。前文:。为了能充分理解本篇文章的内容,需要了解的知识如下:。1.事件对象的使用:http://baike.baidu.com/view/751499.htm。2.信号量的使用:...
由C语言实现简单的线程池,任务调配,合理创建销毁线程处理任务
NULL 博文链接:https://username2.iteye.com/blog/1728583
vs2015 实现的线程池,Task是任务类,Thread线程类。
端口转发程序,简单线程池实现,在此基础上可以改进
用C ++ 11和Folly实现的简单线程池(facebook C ++基础库).zip
NULL 博文链接:https://forhope.iteye.com/blog/481900
从项目中整理的线程池,具体使用方法参加TestMyThreadPool.cpp
此文档是: 基于简单线程池概念的JAVA服务器端应用 附有连接ORACLE数据库等简单操作. 操作描述: 服务器启动后,会启动10个子线程运行.(配合客户端10个请求进行模拟,控制台输出模拟过程) 服务器主程序进入一个有...
用C++对线程池的一种简单实现,容易看懂的