`
wayfarer
  • 浏览: 297684 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Thread Pool

阅读更多
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
                }
            }
        }
    }
}

 22

 

分享到:
评论

相关推荐

    A simple C++11 Thread Pool implementation

    A simple C++11 Thread Pool implementation. Basic usage: // create thread pool with 4 worker threads ThreadPool pool(4); // enqueue and store future auto result = pool.enqueue([](int answer) { ...

    boost线程池(thread pool)

    Boost.Thread库提供了更丰富的线程管理和同步机制,而线程池则进一步优化了并发性能。 Boost线程池的工作原理: 1. 初始化:线程池在启动时会创建一定数量的线程,这些线程在没有任务时处于等待状态。 2. 提交任务...

    threadpool-0_1_8-src.zip_pool_thread_thread library_thread pool_

    标签"pool thread thread_library thread_pool unix_threadpool"表明该库不仅适用于Unix-like系统,还可能包含针对Unix系统的优化。Unix线程池通常会利用Unix系统调用如`pthread_create`、`pthread_join`等进行线程...

    VC_simple-thread-pool.rar_thread pool_vc thread_vc 线程池_vc线程_线程池

    在Windows环境下,线程池主要通过`CreateThreadpool`和相关的API函数来创建和管理。线程池的核心思想是避免频繁地创建和销毁线程,而是维护一个线程集合,当有新的任务需要执行时,线程池会从现有的线程中挑选一个来...

    Intel-Thread-Pool-Demo.rar_DEMO_thread pool

    Intel的Thread Pool Demo是为开发者提供的一种理解和实践线程池机制的实例,特别适合于服务器环境,因为服务器通常需要处理大量并发请求。 在Intel的这个线程池示例中,我们可能会看到以下几个关键知识点: 1. **...

    NewThreadPool.java

    线程池的使用

    Pool_Thread.rar_C 线程池_thread pool_多线程 队列_控制台多线程_线程池 队列

    线程池(Thread Pool)是计算机程序设计中一种高效的线程管理机制,它允许程序员预先创建一组线程,而不是在需要时才动态创建。在"Pool_Thread.rar"这个压缩包中,包含了一个C语言实现的线程池示例,特别强调了其...

    A simple C Thread pool implementation.zip

    标题中的"A simple C Thread pool implementation"表明我们将探讨一个用C语言编写的简单线程池实现。线程池的基本思想是预先创建一组线程,然后根据需要分配任务,而不是每次需要时都创建新的线程,这有助于减少线程...

    阿里dubbo出错提示Thread pool is EXHAUSTED问题及解决方法

    阿里dubbo出错提示Thread pool is EXHAUSTED问题及解决方法 阿里dubbo出错提示Thread pool is EXHAUSTED是一个常见的错误提示,通常发生在dubbo服务端线程池资源耗尽的情况下。在本篇文章中,我们将详细介绍该错误...

    the-design-of-thread-pool-on-Linux.rar_thread pool_并发 线程池

    线程池在Linux环境下的设计是一项关键...《the design of thread pool on Linux.doc》这份文档很可能详细介绍了线程池的设计思路、实现细节以及在实际项目中的应用案例,对于深入理解和使用线程池具有很高的参考价值。

    Modern and efficient C++ Thread Pool Library.zip

    "Modern and efficient C++ Thread Pool Library"很可能是一个第三方库,旨在提供比标准库更高级、性能更好的线程池实现。这个库可能包含以下关键知识点: 1. **线程池概念**:线程池是一组预先创建的线程,等待...

    A simple C++11 Thread Pool implementation.zip

    标题 "A simple C++11 Thread Pool implementation.zip" 指的是一个使用C++11标准库实现的线程池示例。线程池是一种在多线程编程中管理线程资源的有效方式,它允许程序预先创建一组线程,然后根据需要分配任务,而...

    Socket Programming & Thread Pool实例

    在"Socket Programming & Thread Pool实例"中,我们可以期待看到如何将这两种技术结合起来。例如,一个可能的场景是,服务器端使用线程池来处理来自多个客户端的Socket连接请求,每个连接都被一个单独的线程处理,...

    CodeProject Thread Basics and the CLR's Thread Pool_ Free source code and programming help

    CodeProject Thread Basics and the CLR's Thread Pool_ Free source code and programming help

    Qt thread pool 线程池样例,信号槽,跨线程 lambda

    在本文中,我们将深入探讨Qt库中的线程池(Thread Pool)机制,以及如何结合使用信号槽(Signals and Slots)和跨线程的lambda表达式。这些技术在多线程编程中扮演着至关重要的角色,特别是在GUI应用中,能够帮助...

    SmartThreadPool

    Smart Thread Pool is a thread pool written in C#. The implementation was first based on Stephan Toub's thread pool with some extra features, but now it is far beyond the original. Here is a list of ...

    Smart Thread Pool

    线程池(Thread Pool)是计算机程序中一种高效管理线程资源的技术,尤其在多线程编程中,它能够显著提高系统的性能和响应速度。在C#中,线程池被广泛应用于各种并发操作,例如异步处理、定时任务等。本文将深入探讨...

    Multi-thread-pool-test.zip_ CSharp thread_thread pool_多线程下载_等高线

    本文将深入探讨C#中的线程和线程池,并结合"Multi-thread-pool-test.zip"中的示例,来阐述如何利用线程池实现多线程下载以及等高线处理。 **线程与线程池** 线程是操作系统分配CPU时间的基本单元,每个线程都有...

    MariaDB中的thread pool详细介绍和使用方法

    MariaDB中的Thread Pool是一种优化策略,它用于处理高并发场景下的数据库连接,旨在减少服务器资源的开销,尤其是CPU在创建和销毁线程时的负担。在传统的MySQL中,每当一个新的连接请求到来,系统都会创建一个新的...

    VC++ 线程池(ThreadPool)实现

    在VC++中,我们可以利用Windows API中的`CreateThreadpool`系列函数来创建和管理线程池。首先,我们需要包含`WinBase.h`头文件以使用这些API。以下是一些关键步骤: 1. 初始化线程池:调用`...

Global site tag (gtag.js) - Google Analytics