- 浏览: 684446 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
Hippyqq:
谢谢很有用,
java中遍历MAP的几种方法 -
XSoftlab:
超详细。。。Java map 详解 - 用法、遍历、排序、常用 ...
java中遍历MAP的几种方法 -
bobo22:
importnet.sf.fmj.ui.application ...
java来调用电脑视频摄像头拍照进行截图 -
qq981378640:
#include <stdio.h>
int ...
c语言中unsigned类型和普通类型间的转换 -
qq981378640:
楼主你这样有点复杂了,直接这样写更好更方便
#include ...
c语言中unsigned类型和普通类型间的转换
import java.util.LinkedList;
public abstract class Manager {
private String mThreadPoolName = null;
private int mThreadPoolMaxSize = 1;
private LinkedList workers = new LinkedList();
public Manager() {
}
public Manager(String name, int poolMaxSize) {
mThreadPoolName = name;
createWorker(name, poolMaxSize);
mThreadPoolMaxSize = poolMaxSize;
}
private void createWorker(int poolMaxSize) {
for (int i = 0; i < poolMaxSize; i++) {
Worker worker = new ...Worker(this);
workers.addLast(worker);
}
}
public synchronized Worker getIdleWorker() {
return (Worker)workers.removeFirst();
}
public synchronized void notifyFree(Worker worker) {
if (workers.size() < mThreadPoolMaxSize) {
workers.addLast(worker);
} else {
worker = null;
}
}
public int getThreadPoolMaxSize() {
return mThreadPoolMaxSize;
}
public void setThreadPoolMaxSize(int threadPoolMaxSize) {
this.mThreadPoolMaxSize = threadPoolMaxSize;
}
}
线程抽象类
public abstract class Worker implements Runnable {
private Manager mManager = null;
private Thread mThread = null;
public Worker() {
}
public Worker(String threadName, Manager manager) {
mManager = manager;
mThread = new Thread(this, threadName);
init();
mThread.start();
}
public abstract void init();
public void run() {
while (true) {
waitForStart();
Worker worker = mManager.getIdleWorker();
process();
isRunning = false;
mManager.notifyFree(worker);
}
}
public abstract void process();
public void start() {
isRunning = true;
mManager.getIdleWorker();
notifyToStart();
}
public synchronized void waitForStart() {
try {
wait();
} catch (InterruptedException ex) {
}
}
public synchronized void notifyToStart() {
notify();
}
}
转http://www.itzhuyi.com/Item/Show.asp?d=10268&m=1
public abstract class Manager {
private String mThreadPoolName = null;
private int mThreadPoolMaxSize = 1;
private LinkedList workers = new LinkedList();
public Manager() {
}
public Manager(String name, int poolMaxSize) {
mThreadPoolName = name;
createWorker(name, poolMaxSize);
mThreadPoolMaxSize = poolMaxSize;
}
private void createWorker(int poolMaxSize) {
for (int i = 0; i < poolMaxSize; i++) {
Worker worker = new ...Worker(this);
workers.addLast(worker);
}
}
public synchronized Worker getIdleWorker() {
return (Worker)workers.removeFirst();
}
public synchronized void notifyFree(Worker worker) {
if (workers.size() < mThreadPoolMaxSize) {
workers.addLast(worker);
} else {
worker = null;
}
}
public int getThreadPoolMaxSize() {
return mThreadPoolMaxSize;
}
public void setThreadPoolMaxSize(int threadPoolMaxSize) {
this.mThreadPoolMaxSize = threadPoolMaxSize;
}
}
线程抽象类
public abstract class Worker implements Runnable {
private Manager mManager = null;
private Thread mThread = null;
public Worker() {
}
public Worker(String threadName, Manager manager) {
mManager = manager;
mThread = new Thread(this, threadName);
init();
mThread.start();
}
public abstract void init();
public void run() {
while (true) {
waitForStart();
Worker worker = mManager.getIdleWorker();
process();
isRunning = false;
mManager.notifyFree(worker);
}
}
public abstract void process();
public void start() {
isRunning = true;
mManager.getIdleWorker();
notifyToStart();
}
public synchronized void waitForStart() {
try {
wait();
} catch (InterruptedException ex) {
}
}
public synchronized void notifyToStart() {
notify();
}
}
转http://www.itzhuyi.com/Item/Show.asp?d=10268&m=1
发表评论
-
java应用CPU占用100%内存泄漏分析总结
2017-11-28 08:46 590转; http://www.blogjava.net/hank ... -
Java Mysql存取Blob数据
2014-10-21 12:54 1571当数据库字段为blob类型时 ,我们如果使用PreparedS ... -
关于日志的等级 的配置
2014-07-02 16:49 637#这里定义能显示到的最低级别,若定义到INFO级别,则看不到D ... -
Extjs中如何在一行textfield后面加几个字
2014-04-14 16:38 1537{ fieldLabel : '输入框', xtype : ' ... -
数据库中图片的操作(字节流的操作)
2013-12-09 17:26 833package com.fww.util; import j ... -
java 获得本地ip
2013-11-28 18:04 898Enumeration allNetInterfaces = ... -
java多线程下载的例子代码
2013-09-09 16:16 0java多线程下载的例子代码 import java.io.I ... -
java来调用电脑视频摄像头拍照进行截图
2013-09-09 15:34 10427packagecom.pengo.capture; i ... -
java中lucene解析word工具类
2013-09-09 15:32 1061java中lucene解析word工具类(读取word文档并查 ... -
Java 向oracle插入百万数据
2013-09-09 15:30 1556这里的表是没加索引的 ... -
java 写 excel
2013-08-28 10:29 1006import java.io.FileOutputStream ... -
list 排序
2013-06-20 20:43 1093import java.util.Collections; i ... -
java抓取网络图片放到本地
2013-05-07 10:39 4315import java.io.BufferedInputStr ... -
java代码发送JSON格式的httpPOST请求
2013-05-06 13:41 20410package com.test; import java. ... -
java操作excel(HSSF样式) .
2013-04-15 15:06 1998java操作excel(HSSF样式一) import ja ... -
JAVA+Ftpclient操作
2013-03-07 16:35 6593最近再做个ftp上传、下载的项目,用到的包是sun.net.f ... -
自动消除文本框中的空格;js清除空格问题,去除空格问题
2013-03-01 11:22 6324自动消除文本框中的空格;js清除空格问题,去除空格问题 要完成 ... -
java执行Linux命令 .
2012-12-26 09:29 1312/** * 修改Linux目录权限 * @param ... -
UUID生成类
2012-12-16 18:18 2510import java.net.InetAddress; im ... -
java反射获得类的字段和值
2012-12-10 17:26 1644import java.util.HashMap; impo ...
相关推荐
Java连接池是应用程序管理数据库连接的一种机制,它...通过以上步骤,我们可以理解并实现一个简单的Java连接池。手动实现连接池可以加深对数据库连接管理的理解,但实际项目中,使用成熟的连接池组件会更加高效和可靠。
连接池的基本工作原理是:当应用程序需要建立数据库连接时,连接池管理器会检查当前是否有可用的连接,如果有,则返回一个可用的连接对象;否则,连接池管理器将创建一个新的连接对象,并将其添加到连接池中。应用...
C3P0则是一个更复杂的连接池实现,它不仅提供连接池服务,还包含了连接测试和自动回收过期连接的功能。C3P0的配置更加灵活,可以通过XML或Java代码进行。 HikariCP是近年来颇受欢迎的连接池实现,以其高速度和低...
在Java编程中,数据库连接池是一种管理数据库连接的机制,它允许程序重复使用一个已经存在的数据库连接,而不是每次需要时都创建新的连接。这大大提高了应用程序的性能和效率,因为建立和关闭数据库连接是耗时的操作...
本实例探讨的是如何利用Java中的Socket对象以及线程连接池技术,特别是`GenericObjectPool`来提高程序性能和效率。首先,我们需要理解Socket和线程连接池的基本概念。 **Socket**: Socket是网络通信的一种接口,它...
Java网络编程是构建分布式应用程序的关键技术,特别是在服务器端开发中,多线程和连接池是其核心概念。本文将深入探讨这两个主题,并结合文件传输的实际应用进行讲解。 首先,我们来理解多线程。在Java中,多线程...
解决多数据库服务器和多用户问题可以设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中包含了不同的数据库连接信息。 Java JDBC 数据库连接池的优点包括: 1. 提高...
本主题聚焦于如何利用多线程实现在不同数据库间的数据互导,以及结合连接池技术来优化数据库操作,并实现多表插入功能。我们将深入探讨以下几个核心知识点: 1. **Java多线程**: - **线程创建**:Java提供了多种...
在Java程序中,我们创建`BasicDataSource`实例,并使用`Properties`类加载配置文件中的信息,然后将这些信息设置到`BasicDataSource`对象上。 ```java // 创建Properties对象并加载配置文件 Properties prop = new ...
本文将深入探讨数据库连接池的工作原理、重要性以及如何在Java中实现一个简单的连接池。 首先,数据库连接池是管理数据库连接的一种机制,它允许应用程序重复使用已建立的数据库连接,而不是每次需要时都创建新的...
Java JDBC 数据库连接池技术是Java应用程序访问数据库的关键优化手段,尤其在Web应用程序中,它解决了传统JDBC连接方式存在的效率低下和资源浪费问题。Java JDBC(Java Database Connectivity)是Java语言与各种...
Java连接池是Java应用程序中管理数据库连接的一种机制,它的出现大大提高了数据库操作的性能和效率。连接池的基本思想是预先创建一定数量的数据库连接,并将它们保存在一个池中,当应用需要时可以从池中获取一个连接...
通过以上分析可以看出,本文介绍的Java版数据库连接池实现相对简单,但涵盖了连接池的基本功能,包括连接的创建、管理、回收等。实际应用中,可能还需要考虑更多细节,例如连接超时处理、连接异常处理、线程安全等。...
虽然题目提供的部分内容无法直接翻译或解析为有意义的代码片段,但我们可以根据上述理论知识构造一段示例代码来展示如何使用Java实现一个简单的数据库连接池: ```java import java.sql.Connection; import java....
本篇文章将深入解析一个自定义的JAVA数据库连接池类,帮助开发者更好地理解和运用这一关键技术。 首先,连接池的基本思想是预先创建一定数量的数据库连接,并存储在一个集合(如Vector)中,供应用程序按需获取和...
本项目提供了一个轻量级的Java数据库连接池实现,旨在简化开发过程,提高应用性能并降低资源消耗。下面将详细介绍这个轻量级Java数据库连接池的设计理念、工作原理以及如何使用。 1. **设计理念** 轻量级数据库...
Java连接池,特别是Proxool,是数据库管理中一个至关重要的概念,它提高了数据库操作的效率和性能。连接池在Java应用程序中起着桥梁的作用,它管理数据库连接,避免了频繁创建和销毁连接的开销。Proxool是Apache软件...
### 使用Java NIO实现异步连接池的关键知识点 #### 异步连接池的诞生背景与重要性 在现代Web应用程序开发中,为了提升系统性能和响应速度,常连接与连接池技术成为不可或缺的一部分。常连接是指一个持久存在的TCP...
一个简单的Java连接池实现通常包括以下几个核心组件: - **ConnectionFactory**:创建数据库连接的工厂类,负责初始化连接。 - **PoolManager**:连接池管理器,维护连接池的生命周期,包括初始化、分配、回收和...