`
wush121
  • 浏览: 12838 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

几种Java数据库连接池实现(三)<2>

    博客分类:
  • Java
 
阅读更多
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();
            }
        }
    }
}
分享到:
评论

相关推荐

    JSP高级编程

    其他高级功能 &lt;br&gt;11.1 JDBC2.0和JDBC数据库连接池 &lt;br&gt;11.1.1 JDBC2.0新功能概述 &lt;br&gt;11.1.2 结果集增强功能 &lt;br&gt;11.1.3 批处理更新 &lt;br&gt;11.1.4 对Java对象的持久性 &lt;br&gt;11.1.5 数据库连接池使用实例 &lt;br&gt;11.2 文件...

    Java数据库连接池

    Java数据连接池,描述了几种Java与数据库进行连接的方式。

    ibatis 开发指南(pdf)

    DOCTYPE sqlMapConfig&lt;br&gt;PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"&lt;br&gt;"http://www.ibatis.com/dtd/sql-map-config-2.dtd"&gt;&lt;br&gt;&lt;sqlMapConfig&gt;&lt;br&gt;&lt;settings&lt;br&gt;cacheModelsEnabled="true"&lt;br&gt;...

    数据库连接池(database connection pool)是在 Java 中用于管理数据库连接的一种技术

    数据库连接池(database connection pool)是在 Java 中用于管理数据库连接的一种技术。它的主要目的是提高数据库连接的重用性和性能。在传统的数据库连接方式中,每次与数据库建立连接时都需要进行一系列的网络通信...

    jsp编程技巧集锦

    数字转中文&lt;br&gt;128 自动计算金额&lt;br&gt;129 JSP页面打印中使用WebBrowser控件&lt;br&gt;130 &lt;select...&gt;不刷新页面添加新的类别&lt;br&gt;131 鼠标滚动缩放图片&lt;br&gt;132 根据输入的表名生成输入数据表格&lt;br&gt;133 JSP表格输出到Excel...

    java项目开发实践经验之二:几种常见数据库连接池的使用比较(转)

    NULL 博文链接:https://alex295111.iteye.com/blog/726809

    java-JSP数据库连接池的研究与实现(源代码+论文)

    针对这些突出问题,因此提出了一种基于数据库连接池技术的有效解决方法。简而言之,数据库连接池主要作用是负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不再是重新建立一个;...

    Tomcat数据库连接池的配置方法总结.docx

    在配置数据库连接池时,需要注意以下几点: 1. 最小连接数是连接池一直保持的数据库连接,如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费。 2. 最大连接数是连接池申请的最大连接数,...

    Java数据库连接池的几种配置方法(以MySQL数据库为例)

    主要介绍了Java数据库连接池的几种配置方法(以MySQL数据库为例) 的相关资料,需要的朋友可以参考下

    Java_jdbc数据库连接池总结.doc

     程序开发,存在很多问题:首先,每一次Web请求都要建立一次数据库连接。建立连接是一个费时的活动,每次都得花费0.05s~1s的时间,而且系统还要分配内存资源。这个时间对于一次或几次数据库操作,或许感觉不出系统...

    java jdbc原生连接+连接池.zip

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种...通过pool连接池提高性能,并将数据库数据直接转成json对象,且封装了几种取值方式。比传统的ojdbc性能更快更高效

    数据库连接的几种方法

    数据库连接的几种方法,连接池c3p0 ,Proxool ,Druid ,Tomcat Jdbc ...

    jdbc 编程操作数据库java 程序连接

    连接数据库的几种方式 JAVA编程语言和JDBC JDBC编程的步骤 通过ODBC建立连接 通过SQLSERVER 提供的驱动程序获得连接 通过ORACLE提供的驱动程序获得连接 通过数据源获得连接 通过连接池获得连接 总结数据库...

    db-crud:Java操作数据库的常见方式,多种框架使用示例

    Java数据库操作的几种方式 基于Java实现。 项目内容 项目简介 项目起因 本项目主要提供Java操作数据的几种方式示例。 项目框架 db-jdbc: 基于JDBC实现 db-dhcp: 基于数据库连接池实现 db-mybatis: 基于Mybatis框架...

    java开源包4

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    springmybatis

    1.Configuration.xml 是 mybatis 用来建立 sessionFactory 用的,里面主要包含了数据库连接相关东西,还有 java 类所对应的别名,比如 &lt;typeAlias alias="User" type="com.yihaomen.mybatis.model.User"/&gt; 这个别名...

    java开源包3

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    JAVA上百实例源码以及开源项目

    百度云盘分享 ... Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText();...

Global site tag (gtag.js) - Google Analytics