- 浏览: 232428 次
- 性别:
- 来自: beijing
-
文章分类
- 线程池管理器(ThreadPoolManager):用于创建并管理线程池
- 工作线程(WorkThread):线程池中线程
- 任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行。
- 任务队列:用于存放没有处理的任务。提供一种缓冲机制。
- 线程池管理器至少有下列功能:创建线程池,销毁线程池,添加新任务创建线程池的部分代码如下:
- 一共包含三个类:
- ThreadPool,管理线程池,实现采用单例模式。当来一个新的请求时,就把请求放入任务队列,如果有空闲线程,就唤醒等待在任务队列上的空闲线程,否则看工作线程是否超过限制,如果否,则新建一个线程,否则什么也不做。
- WorkThread,干活的线程。run()有个while(true)循环,不断的取任务然后执行任务。
- Request,代表一个任务所有的输入。
- /*#ThreadPool.java*/
- packagethreadpool;
- importjava.util.LinkedList;
- publicclassThreadPool
- {
- publicstaticThreadPoolgetInstance()
- {
- if(pool==null)pool=newThreadPool();
- returnpool;
- }
- publicvoidaddTask(Requestrequest)
- {
- synchronized(taskList)
- {
- taskList.addLast(request);
- if(freeNum==0)
- {
- if(workingNum<maxNum)
- {
- freeNum++;
- (newWorkThread()).start();
- }
- }
- taskList.notifyAll();
- }
- }
- privateThreadPool()
- {
- }
- privatestaticThreadPoolpool;
- privateintmaxNum=500;
- intfreeNum=0;
- intworkingNum=0;
- LinkedList<Request>taskList=newLinkedList<Request>();
- }
- /*#WorkThread.java*/
- packagethreadpool;
- publicclassWorkThreadextendsThread
- {
- privatestaticThreadPoolpool=ThreadPool.getInstance();
- privateRequestr;
- publicvoidrun()
- {
- while(true)
- {
- try
- {
- while(true)
- {
- synchronized(pool.taskList)
- {
- //gotatask
- if(pool.taskList.size()>0)
- {
- pool.freeNum--;
- pool.workingNum++;
- r=pool.taskList.removeFirst();
- pool.taskList.notifyAll();
- break;
- }
- //waitfortask
- elsepool.taskList.wait();
- }
- }
- }
- catch(InterruptedExceptione)
- {
- e.printStackTrace();
- break;
- }
- //finishthetask
- synchronized(pool.taskList)
- {
- pool.freeNum++;
- pool.workingNum--;
- }
- }
- }
- }
- /*#Request.java*/
- packagethreadpool;
- publicclassRequest
- {
- }
发表评论
-
二进制 授权管理 java
2013-09-09 12:52 924package org.qincy.binary; ... -
com.richfit.bi.quartz 定时执行示例
2013-04-12 15:39 01 内含jetty 配置,下载jetty 依赖包,算了,还是提 ... -
利用工具将shp文件导入到oracle spatial中
2012-05-21 14:20 44081 下载shp2sdo 工具,将工具放在 oracle按照目录 ... -
Arcgis object for java 访问栅格数据,使用GP工具,进行栅格矢量化---栅格矢量化面。
2012-06-20 09:17 4193直接贴代码了,不多解释了。 1、栅格数据的 ... -
svn 删除注册表
2012-02-11 12:02 1599svn 删除注册表 -
arcgis server 服务
2012-01-06 17:58 1199package com.hdmap.fymas; imp ... -
Flex BlazeDS java 项目
2011-12-12 17:21 1126根据网上的例子 ,写的 flex BlazeDS 框架与 ... -
工具类
2011-02-18 14:05 987英文数字转换为 中文数字 public class Mon ... -
junit 4 spring 自动化测试
2010-12-13 16:08 16591 添加jar ,依赖jar 包围 spring-test, ... -
在tomcat 发布,去掉项目名称
2010-11-17 09:53 19861 找到 server.xml 配置= ... -
掉字段内容包含的空格
2010-09-27 10:17 997使用replace函数去掉字段内容包含的空格,例子如下: up ... -
无聊的jsti 的fn 函数(资料备份)
2010-09-25 17:16 995无聊的jsti 的fn 函数(资料备份) ... -
无聊写Code
2010-09-25 09:38 1022package edu.qdkj.main; impor ... -
Spring Quartz 学习
2010-09-20 09:27 1184Quartz 是一个 定时执行的框架,可以设定规定时执行,或者 ... -
kaptcha 例子
2010-09-13 15:09 3039kaptcha 简单例子 与 产生中文字符 kaptch ... -
myEclipse 下的项目不能编译
2010-09-09 14:21 960查看 是否有的错误的jar 1.项目----prope ... -
关于VLSM 例子
2010-08-31 16:57 1513未经测试,不知道理解是否正确。 VLSM(可变长子网掩码) ... -
jwebmail的配置
2010-08-16 16:59 2515jwebmail的配置说明 ... -
Solaris10下Nagios安装
2010-08-16 08:48 988发 -
java JDK 下载页面
2010-08-13 16:32 1038全部JDK 下载,从 1.1 到 jdk 6 下载 http ...
相关推荐
用java实现的线程池,自己是初学着,程序参考网上。
NULL 博文链接:https://yulincqupt.iteye.com/blog/1673919
在IT行业中,线程池和消息...为了深入理解这些概念,你可以阅读提供的博客,学习博主如何通过Java实现线程池和消息队列,并结合源码文件来实践和巩固所学知识。这将有助于提升你的Java并发编程和分布式系统设计能力。
在 Java 中,线程池可以使用ThreadPoolExecutor类来实现,ThreadPoolExecutor类可以实现线程池的创建、管理和销毁。线程池的核心思想是预先创建一些空闲线程,等到需要用多线程去处理事务的时候去唤醒某些空闲线程...
本文将深入探讨如何在Java中使用线程池来查询大量数据,以及这样做的好处和实现方法。 首先,理解线程池的概念至关重要。线程池是一种多线程处理形式,预先创建了若干个线程,当有任务需要执行时,会从线程池中取出...
标题 "Java 线程池完整代码" 表明了这篇文章的主题是关于 Java 线程池的完整实现代码,涵盖了线程池的基本概念、配置文件的解析、线程池的创建和管理等方面。 描述解析 描述 "Java 线程池完整源码" 说明了这篇文章...
本文旨在使用Java语言编写一个通用的线程池。当需要使用线程池处理事务时,只需按照指定规范封装好事务处理对象,然后用已有的线程池对象去自动选择空 闲...并实现线程池的动态修改(修改当前线程数,最大线程数等)。
### 自定义实现Java线程池 #### 一、概述 在深入探讨自定义Java线程池之前,我们先简要回顾一下线程池的基本概念及其重要性。线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动...
本资源包含了一个经典的Java线程池实现,适用于大型项目,能帮助开发者理解并应用线程池技术。 线程池的概念源于操作系统中的进程池,其核心思想是减少创建和销毁线程的开销,通过复用已存在的线程来提高系统效率。...
在Java中,线程池的实现主要依赖于`java.util.concurrent`包中的`ExecutorService`接口以及它的实现类,如`ThreadPoolExecutor`。不过,上述代码展示的是一个自定义的线程池实现,它可能没有使用Java标准库中的`...
【自定义Java线程池实现】 在Java编程中,线程池是一种高效管理线程资源的方式,可以提高系统的性能和响应速度。本篇将探讨如何模拟Java的JDK线程池执行流程,以理解其设计原理。核心知识点包括线程池的执行策略、...
Java线程池由`java.util.concurrent`包中的`ExecutorService`接口和其子类实现。其中,最常用的是`ThreadPoolExecutor`类,它提供了丰富的参数用于定制线程池的行为。线程池的核心组件包括: - **核心线程数...
基于Java线程池技术实现Knock Knock游戏项目.zip 基于Java线程池技术实现Knock Knock游戏项目.zip 基于Java线程池技术实现Knock Knock游戏项目.zip 基于Java线程池技术实现Knock Knock游戏项目.zip 基于Java线程池...
java实现通用的线程池,这是我网上找的资料,O(∩_∩)O~希望大家能用的到。
Java开发,Android开发,自己实现线程池,明白线程池的实现机制
- **Java内置线程池**:Java通过`java.util.concurrent`包中的`ExecutorService`接口及其实现类如`ThreadPoolExecutor`提供了线程池的实现。`ThreadPoolExecutor`允许自定义线程池的核心参数,如核心线程数、最大...
线程池是并发编程中非常重要的概念,尤其在Java中,Java的并发工具包(JUC)为实现线程池提供了强大的支持。线程池可以有效地管理线程的生命周期,提高程序执行效率,同时还可以控制资源的使用,防止系统由于创建...
在Java中,`java.util.concurrent`包下的`ExecutorService`接口及其实现类如`ThreadPoolExecutor`是线程池的核心组件。 线程池通过任务队列(工作队列)来管理待执行的任务。在"java 线程池实现多并发队列后进先出...