`
AutomaticThoughts
  • 浏览: 165533 次
社区版块
存档分类
最新评论

一个简单的线程池

 
阅读更多
  1. import java.util.LinkedList;   
  2.   
  3. public class AppThreadPool {   
  4.     private int poolSize;   
  5.   
  6.     private LinkedList queue;   
  7.   
  8.     public AppThreadPool(int poolSize) {   
  9.         this.poolSize = poolSize;   
  10.         queue = new LinkedList();   
  11.         FileWorker[] Pool = new FileWorker[poolSize];   
  12.         for (int i = 0; i < Pool.length; i++) {   
  13.             Pool[i] = new FileWorker();   
  14.             Pool[i].start();   
  15.         }   
  16.     }   
  17.   
  18.     public void addTask(Runnable r) {   
  19.         synchronized (queue) {   
  20.             queue.addLast(r);   
  21.             queue.notify();   
  22.         }   
  23.     }   
  24.   
  25.     public int getSize() {   
  26.         return poolSize;   
  27.     }   
  28.   
  29.     private class FileWorker extends Thread {   
  30.         public void run() {   
  31.             Runnable task;   
  32.             while (true) {   
  33.                 synchronized (queue) {   
  34.                     while (queue.isEmpty()) {   
  35.                         try {   
  36.                             queue.wait();   
  37.                         } catch (InterruptedException e) {   
  38.                             e.printStackTrace();   
  39.                         }   
  40.                     }   
  41.                     task = (Runnable) queue.removeFirst();   
  42.                 }   
  43.                 task.run();   
  44.             }   
  45.         }   
  46.     }   
  47.   
  48. }  
分享到:
评论

相关推荐

    一个简单线程池的实现

    当有新的任务提交时,线程池会选择一个空闲的线程来执行任务,而不是每次都需要创建新的线程,这样可以避免频繁的线程创建和销毁带来的开销。 `twork_work.cpp`和`twork_work.h`文件可能定义了一个工作单元(Work ...

    这是一个使用C++实现的简易线程池.zip

    这是一个使用C++实现的简易线程池.zip这是一个使用C++实现的简易线程池.zip这是一个使用C++实现的简易线程池.zip这是一个使用C++实现的简易线程池.zip这是一个使用C++实现的简易线程池.zip这是一个使用C++实现的简易...

    一个简单的线程池例子

    在提供的压缩包文件"ThreadPool_src"中,可能包含了一个简单的线程池实现的源代码。通过查看和分析这个源代码,我们可以学习到线程池的具体实现细节,如如何创建线程、如何管理任务队列、如何调度任务以及如何控制...

    linux 实现一个简单的线程池及工作

    本实例将深入探讨如何在Linux下实现一个简单的线程池,并介绍相关的关键知识点。 1. **线程与线程池的概念** - **线程**:是操作系统分配CPU时间片的基本单位,是程序执行的流,一个进程中可以包含多个线程,它们...

    Linux下C线程池实现

    在Linux下用C写的一个简易线程池。系统是RedHat 9,gcc版本"gcc version 4.1.2 20071124 (Red Hat 4.1.2-42)"。文件夹里的源码是按工程组织好的,在文件夹下的test目录下面有一个小的测试程序和Makefile,编译后即可...

    VC写的一个简单的线程池

    线程池是一种多线程处理形式,通过...通过上述知识点,我们可以设计并实现一个简单的线程池,利用VC的特性,优化多线程程序的性能和资源利用率。学习和参考提供的源代码,有助于深入理解线程池的工作原理和实践应用。

    C++简单线程池设计

    线程池的核心概念是包含一个工作队列,当有新任务到来时,线程池会从队列中取出任务分配给空闲的线程执行,而不是每次都需要创建新的线程。 下面是一个基本的线程池设计步骤: 1. **线程池结构**:定义一个线程池...

    Java简单线程池 线程池中文文档

    简单的线程池程序+中文文档 包结构: com.tangkai.threadpool --SimpleThread.java 工作线程 --TestThreadPool.java 程序入口 --ThreadPoolManager.java 线程池管理类

    简单线程池与线程池检查的实现

    3. 执行任务:工作线程从队列中取出任务,执行完毕后返回工作队列等待下一个任务。 4. 线程管理:根据系统负载和设定策略,动态调整线程池的大小。 5. 销毁线程池:当线程池不再需要时,可以安全地关闭线程池,释放...

    c++简易线程池

    标题"简易线程池"暗示这是一个简单的实现,可能适合初学者学习和理解线程池的工作原理。线程池的实现通常包括以下几个关键组件: 1. **任务队列**:线程池维护一个任务队列,用于存放待处理的任务。任务可以是函数...

    C++11 简易线程池实现

    简易的C++11线程池实现,线程池为固定方式,后面会新增非固定模式。

    Java线程池文档

    Java代码中展示的`ThreadPool`类是作者实现的一个简单线程池示例,使用了`LinkedList`作为工作队列,`ThreadPool`类继承了`ThreadGroup`,这在JDK 1.4版本中是一种常见实现方式。但在JDK 1.5及以上版本,推荐使用`...

    一个完整的线程池的实例

    2. **`Worker` 类**:这是一个内部类,继承自`Thread`,负责实际的任务执行。 - `runner`:当前`Worker`正在执行的`Runnable`任务。 - `wakeup` 方法:用于唤醒当前处于等待状态的`Worker`,使其开始执行新的任务...

    100行Java代码构建一个线程池

    在示例代码中,作者使用简单的Java代码创建了一个线程池,通过`ThreadPoolManager`类来管理线程池,并使用`SimpleThread`类作为处理任务的线程。 【示例代码分析】 1. `TestThreadPool`类是测试类,模拟客户端发送...

    使用Vector实现简单线程池

    然而,如果我们想要从头开始理解线程池的工作原理,或者在特定场景下自定义线程池的行为,那么使用`Vector`来实现简单的线程池是一个很好的学习实践。 标题"使用Vector实现简单线程池"指的是将Java中的`Vector`类...

    C语言实现简单线程池.zip

    在本项目"简单线程池"中,我们将重点探讨如何用C语言在Linux环境下实现这样一个线程池系统,特别是关注其核心组件和设计原则。 首先,线程池的核心概念是线程复用,通过预先创建一组线程,可以避免频繁地创建和销毁...

    线程池  

    下面我们将详细探讨如何在VC++中构建一个简单的线程池。 首先,线程池的核心组件包括: 1. **线程池对象**:这是管理所有线程的容器,负责线程的创建、调度和销毁。 2. **任务队列**:线程池中存放待处理任务的...

    vc写的一个线程池操作的类

    压缩包中的"VC写的一个简单的线程池"可能是源代码文件,包含了实现上述功能的类和函数。为了更好地理解和使用这个线程池,开发者需要查看源码,了解类的接口、成员函数以及它们的使用方法。同时,还需要确保代码与...

    简单的线程池模型 (Dephi版),线程池

    标题“简单的线程池模型 (Dephi版),线程池”表明这是一个针对Delphi开发者的资源,它提供了一个简易的线程池实现。线程池的设计可能包括基本的线程管理、任务队列、线程复用等功能,旨在帮助开发者更高效地利用多核...

Global site tag (gtag.js) - Google Analytics