ackage pool;
//连接池调度线程
public class FactoryMangeThread implements Runnable {
ConnectionFactory cf = null;
long delay = 1000;
public FactoryMangeThread(ConnectionFactory obj) {
cf = obj;
}
/*
* (non-Javadoc)
*
* @see java.lang.Runnable#run()
*
*/
public void run() {
while (true) {
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
}
System.out.println("eeeee");
// 判断是否已经关闭了工厂,那就退出监听
if (cf.isCreate())
cf.schedule();
else
System.exit(1);
}
}
}
package pool;
//连接池工厂参数
public class FactoryParam {
// 最大连接数
private int MaxConnectionCount = 4;
// 最小连接数
private int MinConnectionCount = 2;
// 回收策略
private int ManageType = 0;
public FactoryParam() {
}
/**
*
* 构造连接池工厂参数的对象
*
* @param max
* 最大连接数
*
* @param min
* 最小连接数
*
* @param type
* 管理策略
*
*/
public FactoryParam(int max, int min, int type) {
this.ManageType = type;
this.MaxConnectionCount = max;
this.MinConnectionCount = min;
}
/**
*
* 设置最大的连接数
*
* @param value
*
*/
public void setMaxConn(int value) {
this.MaxConnectionCount = value;
}
/**
*
* 获取最大连接数
*
* @return
*
*/
public int getMaxConn() {
return this.MaxConnectionCount;
}
/**
*
* 设置最小连接数
*
* @param value
*
*/
public void setMinConn(int value) {
this.MinConnectionCount = value;
}
/**
*
* 获取最小连接数
*
* @return
*
*/
public int getMinConn() {
return this.MinConnectionCount;
}
public int getType() {
return this.ManageType;
}
}
===
package pool;
import java.sql.*;
public class testmypool {
public void test1() {
String user = "DevTeam";
String password = "DevTeam";
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:gfqh2";
ConnectionParam param = new ConnectionParam(driver, url, user, password);
ConnectionFactory cf = null;// new ConnectionFactory(param, new
// FactoryParam());
try {
cf = new ConnectionFactory(param, new FactoryParam());
Connection conn1 = cf.getFreeConnection();
Connection conn2 = cf.getFreeConnection();
Connection conn3 = cf.getFreeConnection();
Statement stmt = conn1.createStatement();
ResultSet rs = stmt.executeQuery("select * from requests");
if (rs.next()) {
System.out.println("conn1 y");
} else {
System.out.println("conn1 n");
}
stmt.close();
conn1.close();
Connection conn4 = cf.getFreeConnection();
Connection conn5 = cf.getFreeConnection();
stmt = conn5.createStatement();
rs = stmt.executeQuery("select * from requests");
if (rs.next()) {
System.out.println("conn5 y");
} else {
System.out.println("conn5 n");
}
conn2.close();
conn3.close();
conn4.close();
conn5.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
cf.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
String user = "DevTeam";
String password = "DevTeam";
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:gfqh2";
ConnectionParam param = new ConnectionParam(driver, url, user, password);
ConnectionFactory cf = null;
// new ConnectionFactory(param,new FactoryParam());
try {
cf = new ConnectionFactory(param, new FactoryParam());
// ConnectionFactory cf1 = new ConnectionFactory(param,new
// FactoryParam());
Connection conn1 = null;
long time = System.currentTimeMillis();
for (int i = 0; i < 10; i++) {
conn1 = cf.getFreeConnection();
Statement stmt = conn1.createStatement();
ResultSet rs = stmt.executeQuery("select * from requests");
if (rs.next()) {
System.out.println("conn1 y");
} else {
System.out.println("conn1 n");
}
conn1.close();
}
System.out.println("pool:" + (System.currentTimeMillis() - time));
time = System.currentTimeMillis();
Class.forName(param.getDriver()).newInstance();
for (int i = 0; i < 10; i++) {
conn1 = DriverManager.getConnection(param.getUrl(), param
.getUser(), param.getPassword());
Statement stmt = conn1.createStatement();
ResultSet rs = stmt.executeQuery("select * from requests");
if (rs.next()) {
System.out.println("conn1 y");
} else {
System.out.println("conn1 n");
}
conn1.close();
}
System.out
.println("no pool:" + (System.currentTimeMillis() - time));
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
cf.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
Java JDBC 数据库连接池总结 Java 语言中,JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁。在 Web 应用开发的早期,主要使用的技术是 CGIASPPHP 等。之后,Sun 公司推出了基于 Java 语言的 ...
Java数据库连接池(JDBC Connection Pool)是一种管理数据库连接的技术,它允许应用程序重复使用已经存在的数据库连接,而不是每次需要时都创建新的连接。这大大提高了应用程序的性能和效率,因为创建和销毁数据库...
本篇文章将深入解析一个自定义的JAVA数据库连接池类,帮助开发者更好地理解和运用这一关键技术。 首先,连接池的基本思想是预先创建一定数量的数据库连接,并存储在一个集合(如Vector)中,供应用程序按需获取和...
本篇文章将探讨几种常见的数据库连接池的使用比较,包括Proxool、DBCP、C3P0,并通过配置文件(如`proxool.xml`、`dbcp.xml`和`c3p0.xml`)来展示它们的配置细节。 首先,我们来看Proxool,它是一个轻量级的数据库...
Java数据库连接池的原理与应用 在Java开发领域,数据库连接池(Database Connection Pool,简称DBCP)是一种提高数据库访问性能、降低资源消耗的重要技术。它通过预先建立一定数量的数据库连接,存储在一个“池”中...
本文将详细讲解在Tomcat中配置数据库连接池的几种常见方法,帮助开发者实现高效、稳定的数据库访问。 一、Apache Commons DBCP Apache Commons DBCP是Apache组织提供的一款开源数据库连接池组件,它基于Jakarta-...
总结来说,本资源提供了学习和实践Java数据库连接池的一个起点。通过分析源码并运行示例,你可以深入理解数据库连接池的实现细节,这将对提升Java应用的数据库性能有很大帮助。同时,这也是一次了解和比较不同连接池...
Java数据库连接池是管理数据库连接的一种机制,它可以有效地复用数据库连接,避免每次数据库操作时创建和销毁连接的开销,从而提高了应用的性能。在Java中,有多种数据库连接池实现,包括C3P0、DBCP和Proxool等。 *...
总的来说,Java数据库连接池是提高JSP网站性能的关键技术之一,它通过优化数据库连接的创建和管理,降低了系统资源的消耗,提升了网站的响应速度。正确理解和使用数据库连接池,是每个Java开发者必备的技能。
Java数据库连接池是一种高效管理数据库连接的技术,它在Java应用程序中扮演着至关重要的角色。连接池的基本思想是预先创建一定数量的数据库连接,存储在内存中,当应用程序需要时,从池中获取一个已存在的连接,用完...
Java数据库连接池是一种重要的技术,它在Java应用程序与数据库交互时起到了关键的作用。数据库连接池在多线程、高并发的环境下尤其重要,因为它能够有效地管理和重用数据库连接,从而提高系统性能,减少资源消耗。 ...
HikariCP被誉为最快的Java数据库连接池,它的设计目标是提供最小的延迟和最大的并发性能。在Spring中配置HikariCP,首先需要添加依赖: ```xml <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP...
数据库连接池是现代应用程序开发中的重要组成部分,它有效地管理和复用数据库连接,提高了系统的性能和资源利用率。在Java Web开发中,C3P0和DBCP是常用的两种连接池实现。下面将详细介绍这两种连接池的配置与使用。...
在Java开发中,Tomcat作为一款广泛使用的应用服务器,提供了对数据库连接池的支持,使得应用程序可以高效、便捷地管理数据库连接。本文将详细介绍如何在Tomcat中配置和使用数据库连接池,以及相关的知识点。 首先,...