http://www.ibm.com/developerworks/cn/java/j-jtp0730/
import java.util.LinkedList;
public class WorkQueue
{
private final int nThreads;
private final PoolWorker[] threads;
private final LinkedList queue;
public WorkQueue(int nThreads)
{
this.nThreads = nThreads;
queue = new LinkedList();
threads = new PoolWorker[nThreads];
for (int i=0; i<nThreads; i++) {
threads[i] = new PoolWorker();
threads[i].start();
}
}
public void execute(Runnable r) {
synchronized(queue) {
queue.addLast(r);
queue.notify();
}
}
private class PoolWorker extends Thread {
public void run() {
Runnable r;
while (true) {
synchronized(queue) {
while (queue.isEmpty()) {
try
{
queue.wait();
}
catch (InterruptedException ignored)
{
}
}
r = (Runnable) queue.removeFirst();
}
// If we don't catch RuntimeException,
// the pool could leak threads
try {
r.run();
}
catch (RuntimeException e) {
// You might want to log something here
}
}
}
}
}
分享到:
相关推荐
简易的C++11线程池实现,线程池为固定方式,后面会新增非固定模式。
【标题】:19 自己动手丰衣足食—简单线程池实现 【描述】:本章节将探讨Java并发编程中的线程池实现,通过自己动手创建一个简单的线程池,来理解线程池的工作原理及其优势。 【知识点详解】: 1. **线程池的必要...
在这个简单的线程池实现中,我们可以通过`pthread_pool.cpp`、`MainFunctionForTest.cpp`、`twork_work.cpp`、`pthread_pool.h`和`twork_work.h`这五个文件来理解其基本架构和工作原理。 首先,`pthread_pool.h`...
总结来说,这个简单的C++线程池实现是一个学习多线程和并发编程的好起点。它通过封装线程管理和任务调度,为开发者提供了一种更高效、更可控的方式来处理并发任务。在实际应用中,线程池可以被扩展以适应更复杂的...
一个简单的线程池实现通常包括以下几个关键部分: 1. **线程池初始化**:创建线程池时,需要设定一些参数,如核心线程数(corePoolSize)、最大线程数(maximumPoolSize)、线程存活时间(keepAliveTime)以及单位...
这是一个使用C++实现的简易线程池.zip这是一个使用C++实现的简易线程池.zip这是一个使用C++实现的简易线程池.zip这是一个使用C++实现的简易线程池.zip这是一个使用C++实现的简易线程池.zip这是一个使用C++实现的简易...
在给定的标题和描述中,提到的是一个端口转发程序的实现,使用了简单的线程池技术。 线程池是一种编程概念,它管理一组预先创建的线程,以便高效地处理多个并发任务。在操作系统中,创建和销毁线程都有一定的开销,...
易语言简易线程池的实现。 ——V雪落有声V原创。转载请保留。前文:。为了能充分理解本篇文章的内容,需要了解的知识如下:。1.事件对象的使用:http://baike.baidu.com/view/751499.htm。2.信号量的使用:...
在给定的资源中,"200行C代码实现简单线程池.doc"可能包含了详细的设计和实现步骤,以及如何在实际项目中应用线程池的文档。而"threadpool.c"则是实际的C语言源代码文件,实现了线程池的核心功能。下面我们将探讨...
三、简单的C++线程池代码示例 四、 基于boost编写的源码库 - 线程池 4.1 基于boost编写的源码库地址 4.2 boost线程池的先进先出、后进先出、优先级代码示例 五、看看人家线程池怎么写的 - 要理解精髓 六、线程池应用...
总的来说,这个项目提供了一个基础的C语言线程池实现,展示了如何利用POSIX线程在Linux环境下进行多线程编程。理解和实现这样的线程池不仅可以提高程序的效率,还能帮助开发者深入理解操作系统级的并发编程。
C语言实现的简单线程池
标题 "简单线程池与线程池检查的实现" 涉及到的是计算机编程中的多线程管理和优化,特别是线程池的概念及其检查机制。线程池是一种多线程处理形式,预先创建一定数量的线程,放入池中,当有任务需要执行时,直接从池...
不过,实际生产环境中的线程池实现往往会选择更高效的数据结构,例如`BlockingQueue`,并配合`ExecutorService`的高级特性,如定时任务、工作队列大小控制等。 在实际项目中,使用标准库提供的`ExecutorService`和`...
该线程池方案的设计目标是提供一个简单、快速、可靠的线程池实现。它能够满足项目的需求,提供一个高效的线程池解决方案。 四、线程池的功能定义 该线程池方案具有以下几个功能: 1. 支持线程池中的最小工作线程数...
线程池 这是一个简单的 C++11 线程池实现。
下面将详细讨论线程池的原理及其在Java中的实现。 首先,我们来看`ThreadPoolManager`类,这个类通常用于管理线程池,包括初始化线程池、提交任务以及关闭线程池等操作。线程池的大小可以通过参数设置,可以根据...
在Linux下用C写的一个简易线程池。系统是RedHat 9,gcc版本"gcc version 4.1.2 20071124 (Red Hat 4.1.2-42)"。文件夹里的源码是按工程组织好的,在文件夹下的test目录下面有一个小的测试程序和Makefile,编译后即可...
通过这个简单的线程池实现,我们可以更好地理解和控制并发任务的调度,同时避免了频繁创建和销毁线程的开销。在实际项目中,线程池可以进一步优化,例如添加任务优先级支持、限制并发执行的任务数量、设置超时机制等...
"DotNetInfra.ThreadingServices.Common"可能包含了线程池实现过程中的一些通用工具或类,例如线程安全的数据结构、信号量、锁等,这些都是构建高效线程池必不可少的组件。 "readme.txt"文件通常会提供项目简介、...