`

工作队列池,线程池

    博客分类:
  • java
阅读更多
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].setDaemon(true);
            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();
                    System.out.println(r);
                }
                // If we don't catch RuntimeException,
                // the pool could leak threads
                try {
                    r.run();
                }
                catch (RuntimeException e) {
                    // You might want to log something here
                }
            }
        }
    }
    public static void main(String[] args) {
//申请5个备用工作线程池
    WorkQueue sdf = new WorkQueue(5);
//并发15个或者更多线程任务
    for (int i=0;i<100;i++) {
    sdf.execute(new taskThread());
}
   
}
}
分享到:
评论

相关推荐

    线程池&&队列各类区别使用场景

    1. 工作线程(Worker Threads):池中的线程,负责执行任务。 2. 任务队列(Task Queue):存储待执行任务的地方,线程从这里获取任务并执行。 3. 控制机制:如线程数量限制,超时策略等,用于控制线程的生命周期和...

    09丨队列:队列在线程池等有限资源池中的应用.pdf

    "队列:队列在线程池等有限资源池中的应用" 在计算机科学中,队列是一种基本的数据结构,它可以用来解决许多实际问题。队列的概念非常简单,可以想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队。队列...

    队列:队列在线程池等有限资源池中的应用.pdf

    ### 队列在线程池等有限资源池中的应用 #### 队列的基本概念 队列是一种线性数据结构,遵循先进先出(First In First Out, FIFO)的原则,即最先加入队列的元素会被最先移除。队列支持两种主要操作:入队(enqueue...

    glib库异步队列和线程池代码分析

    ### glib库异步队列和线程池代码分析 #### 一、异步队列原理与实现 异步队列是一种高效的线程间通信机制,用于在多线程环境中同步共享数据。它通过将数据组织成队列的形式,允许线程在不阻塞的情况下进行读写操作...

    09队列:队列在线程池等有限资源池中的应用.pdf

    线程池是多线程处理中常用的一种技术,它预先创建一定数量的线程,并将它们组织成池,用于执行异步任务。线程池的大小是有限的,不可能无限制地创建线程。如果线程池中的线程都忙于执行任务,而此时又有新的任务需要...

    09丨队列:队列在线程池等有限资源池中的应用1

    在计算机科学中,队列在处理有限资源的场景中,如线程池,扮演着重要的角色。线程池是预先设定大小的线程集合,用于管理并发任务的执行。当线程池达到其最大容量时,新请求的任务不会立即执行,而是被放入队列等待,...

    并发-线程池和阻塞队列.pdf

    线程池的工作原理是通过维护一定数量的工作线程,这些线程可以被重复利用来执行提交给池的任务。线程池的使用可以有效地减少线程创建和销毁的开销,控制并发执行的数量,避免过度创建线程导致资源耗尽,还可以对线程...

    线程池与工作队列--Java 理论与实践

    ### 线程池与工作队列:Java理论与实践 #### 一、线程池的概念及重要性 线程池是一种广泛应用于服务器应用程序的技术,主要用于优化资源利用效率,提高程序响应速度,并确保系统的稳定性和可靠性。在多线程编程...

    c++ 线程池实现及安全队列

    2. **工作线程**:线程池中的线程负责从任务队列中取出任务并执行。这些线程通常在一个无限循环中运行,直到线程池被关闭。 3. **提交接口**:供用户提交任务到线程池的API,应保证线程安全。 4. **线程同步机制**...

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

    线程池的设计可能包括基本的线程管理、任务队列、线程复用等功能,旨在帮助开发者更高效地利用多核处理器的能力,同时简化并发编程的复杂性。 描述中提到的“全部源代码”,意味着这个压缩包包含了一个完整的Delphi...

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

    线程池是一种多线程处理形式,预先创建一定数量的线程,放入池中,当有任务需要执行时,直接从池中获取线程来执行任务,而不是每次都创建新的线程,从而提高了系统资源的利用率,降低了系统开销。 线程池的核心组件...

    六、进程池与线程池学习ppt

    **并发服务器**的实现通常利用线程池或进程池,主线程(生产者)接收客户端请求并将其分配给工作线程(消费者)处理。这种方式使得服务器能够同时处理多个客户端连接,极大地提高了服务端的并发处理能力。 总结起来...

    JVM优先级线程池做任务队列的实现方法

    ThreadPoolExecutor类提供了多种方法来控制线程池的大小和优先级,例如setCorePoolSize()方法用于设置线程池的核心池大小,setMaximumPoolSize()方法用于设置线程池的最大池大小,等等。 知识点3:任务队列的实现 ...

    xianchengchi.zip_Socket 线程池_socket池_线程池_线程池socket

    本篇将详细探讨Socket线程池的概念、工作原理以及它如何解决多个线程对同一个套接字进行写操作的问题。 首先,我们来理解什么是Socket。Socket是网络上的进程间通信(IPC)的一种接口,允许两台计算机通过Internet...

    Java实现的线程池、消息队列功能

    在IT行业中,线程池和消息队列是两种非常重要的并发处理和系统间通信机制。本文将基于给定的标题“Java实现的线程池、消息队列功能”来详细阐述这两个概念及其在Java中的实现。 首先,我们来讨论线程池。线程池是一...

    acl框架库是一个C语言网络框架库,主要包含:服务器开发框架、同步异步网络通讯、常用数据结构、进程池线程池、流式xmljson

    4. **进程池线程池**:ACL框架提供了进程池和线程池的管理工具,这有助于减少进程和线程的创建销毁开销,改善系统的响应速度和资源利用率。通过合理调度和复用,可以避免频繁的上下文切换,提升整体系统的运行效率。...

    drm_server1.1.rar_DRMPOOL_libevent_libevent linux_内存池_线程池

    线程池是一种多线程处理形式,预先创建一组线程,当有任务需要执行时,任务会被放入队列,由线程池中的空闲线程进行处理。在drm_server1.1服务中,线程池设计用于平衡系统负载,避免频繁地创建和销毁线程带来的开销...

    C++ 线程池+任务池

    任务池则是一种任务调度机制,它将待处理的任务放入一个队列,由线程池中的线程按顺序或并行地从队列中取出任务进行执行。这种方式使得任务的提交和执行解耦,简化了并发编程的复杂性。 在C++中,虽然标准库并没有...

    线程池实现,通过C语言实现

    C语言实现线程池时,首先需要包含`pthread.h`头文件,然后定义线程池结构体,通常包括线程数组、任务队列和同步结构体。接下来,创建线程池需要初始化这些元素,启动工作线程并设置一个循环来接收和处理任务。当...

Global site tag (gtag.js) - Google Analytics