`

java实现的线程池

    博客分类:
  • java
阅读更多
  1. 线程池管理器(ThreadPoolManager):用于创建并管理线程池
  2. 工作线程(WorkThread):线程池中线程
  3. 任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行。
  4. 任务队列:用于存放没有处理的任务。提供一种缓冲机制。
  5. 线程池管理器至少有下列功能:创建线程池,销毁线程池,添加新任务创建线程池的部分代码如下:
  6. 一共包含三个类:
  7. ThreadPool,管理线程池,实现采用单例模式。当来一个新的请求时,就把请求放入任务队列,如果有空闲线程,就唤醒等待在任务队列上的空闲线程,否则看工作线程是否超过限制,如果否,则新建一个线程,否则什么也不做。
  8. WorkThread,干活的线程。run()有个while(true)循环,不断的取任务然后执行任务。
  9. Request,代表一个任务所有的输入。
  10. /*#ThreadPool.java*/
  11. packagethreadpool;
  12. importjava.util.LinkedList;
  13. publicclassThreadPool
  14. {
  15. publicstaticThreadPoolgetInstance()
  16. {
  17. if(pool==null)pool=newThreadPool();
  18. returnpool;
  19. }
  20. publicvoidaddTask(Requestrequest)
  21. {
  22. synchronized(taskList)
  23. {
  24. taskList.addLast(request);
  25. if(freeNum==0)
  26. {
  27. if(workingNum<maxNum)
  28. {
  29. freeNum++;
  30. (newWorkThread()).start();
  31. }
  32. }
  33. taskList.notifyAll();
  34. }
  35. }
  36. privateThreadPool()
  37. {
  38. }
  39. privatestaticThreadPoolpool;
  40. privateintmaxNum=500;
  41. intfreeNum=0;
  42. intworkingNum=0;
  43. LinkedList<Request>taskList=newLinkedList<Request>();
  44. }
  45. /*#WorkThread.java*/
  46. packagethreadpool;
  47. publicclassWorkThreadextendsThread
  48. {
  49. privatestaticThreadPoolpool=ThreadPool.getInstance();
  50. privateRequestr;
  51. publicvoidrun()
  52. {
  53. while(true)
  54. {
  55. try
  56. {
  57. while(true)
  58. {
  59. synchronized(pool.taskList)
  60. {
  61. //gotatask
  62. if(pool.taskList.size()>0)
  63. {
  64. pool.freeNum--;
  65. pool.workingNum++;
  66. r=pool.taskList.removeFirst();
  67. pool.taskList.notifyAll();
  68. break;
  69. }
  70. //waitfortask
  71. elsepool.taskList.wait();
  72. }
  73. }
  74. }
  75. catch(InterruptedExceptione)
  76. {
  77. e.printStackTrace();
  78. break;
  79. }
  80. //finishthetask
  81. synchronized(pool.taskList)
  82. {
  83. pool.freeNum++;
  84. pool.workingNum--;
  85. }
  86. }
  87. }
  88. }
  89. /*#Request.java*/
  90. packagethreadpool;
  91. publicclassRequest
  92. {
  93. }
分享到:
评论

相关推荐

    Java 实现简单的线程池

    用java实现的线程池,自己是初学着,程序参考网上。

    java 线程池示例(自己实现的参考别人的代码)

    NULL 博文链接:https://yulincqupt.iteye.com/blog/1673919

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

    在IT行业中,线程池和消息...为了深入理解这些概念,你可以阅读提供的博客,学习博主如何通过Java实现线程池和消息队列,并结合源码文件来实践和巩固所学知识。这将有助于提升你的Java并发编程和分布式系统设计能力。

    Java实现通用线程池

    在 Java 中,线程池可以使用ThreadPoolExecutor类来实现,ThreadPoolExecutor类可以实现线程池的创建、管理和销毁。线程池的核心思想是预先创建一些空闲线程,等到需要用多线程去处理事务的时候去唤醒某些空闲线程...

    JAVA使用线程池查询大批量数据

    本文将深入探讨如何在Java中使用线程池来查询大量数据,以及这样做的好处和实现方法。 首先,理解线程池的概念至关重要。线程池是一种多线程处理形式,预先创建了若干个线程,当有任务需要执行时,会从线程池中取出...

    java线程池完整代码

    标题 "Java 线程池完整代码" 表明了这篇文章的主题是关于 Java 线程池的完整实现代码,涵盖了线程池的基本概念、配置文件的解析、线程池的创建和管理等方面。 描述解析 描述 "Java 线程池完整源码" 说明了这篇文章...

    java实现通用线程池的代码

    本文旨在使用Java语言编写一个通用的线程池。当需要使用线程池处理事务时,只需按照指定规范封装好事务处理对象,然后用已有的线程池对象去自动选择空 闲...并实现线程池的动态修改(修改当前线程数,最大线程数等)。

    自定义实现Java线程池

    ### 自定义实现Java线程池 #### 一、概述 在深入探讨自定义Java线程池之前,我们先简要回顾一下线程池的基本概念及其重要性。线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动...

    JAVA经典线程池源码

    本资源包含了一个经典的Java线程池实现,适用于大型项目,能帮助开发者理解并应用线程池技术。 线程池的概念源于操作系统中的进程池,其核心思想是减少创建和销毁线程的开销,通过复用已存在的线程来提高系统效率。...

    Java版线程池实现

    在Java中,线程池的实现主要依赖于`java.util.concurrent`包中的`ExecutorService`接口以及它的实现类,如`ThreadPoolExecutor`。不过,上述代码展示的是一个自定义的线程池实现,它可能没有使用Java标准库中的`...

    自定义实现Java线程池1-模拟jdk线程池执行流程1

    【自定义Java线程池实现】 在Java编程中,线程池是一种高效管理线程资源的方式,可以提高系统的性能和响应速度。本篇将探讨如何模拟Java的JDK线程池执行流程,以理解其设计原理。核心知识点包括线程池的执行策略、...

    java线程池封装j

    Java线程池由`java.util.concurrent`包中的`ExecutorService`接口和其子类实现。其中,最常用的是`ThreadPoolExecutor`类,它提供了丰富的参数用于定制线程池的行为。线程池的核心组件包括: - **核心线程数...

    基于Java线程池技术实现Knock Knock游戏项目.zip

    基于Java线程池技术实现Knock Knock游戏项目.zip 基于Java线程池技术实现Knock Knock游戏项目.zip 基于Java线程池技术实现Knock Knock游戏项目.zip 基于Java线程池技术实现Knock Knock游戏项目.zip 基于Java线程池...

    java实现通用的线程池

    java实现通用的线程池,这是我网上找的资料,O(∩_∩)O~希望大家能用的到。

    Java 自己实现线程池

    Java开发,Android开发,自己实现线程池,明白线程池的实现机制

    Java 线程池的原理与实现

    - **Java内置线程池**:Java通过`java.util.concurrent`包中的`ExecutorService`接口及其实现类如`ThreadPoolExecutor`提供了线程池的实现。`ThreadPoolExecutor`允许自定义线程池的核心参数,如核心线程数、最大...

    纯java安全线程池工具类

    线程池是并发编程中非常重要的概念,尤其在Java中,Java的并发工具包(JUC)为实现线程池提供了强大的支持。线程池可以有效地管理线程的生命周期,提高程序执行效率,同时还可以控制资源的使用,防止系统由于创建...

    java 线程池实现多并发队列后进先出

    在Java中,`java.util.concurrent`包下的`ExecutorService`接口及其实现类如`ThreadPoolExecutor`是线程池的核心组件。 线程池通过任务队列(工作队列)来管理待执行的任务。在"java 线程池实现多并发队列后进先出...

Global site tag (gtag.js) - Google Analytics