JAVA写简单的数据库连接池

创建数据库连接以及关闭连接是很耗费时间的,并且数据库支持的连接数量也是有限的,当数据库的连接数量达到上限的时候,后续的连接就会失败。因此这里引入了数据库缓冲池。

public class ConnecionPool {
    private int size;
    List<Connection> connections = new ArrayList<>();
    public ConnecionPool(int size){
        this.size=size;
        init();
    }
    public void init(){

        try {
            Class.forName("com.mysql.jdbc.Driver");
            while (size--!=0){

                connections.add(DriverManager.getConnection(jdbc:mysql://127.0.0.1:3306/d数据库名称, 用户名,密码)// );

            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    public Connection getConnection(){
        try {//如果没有连接了,线程就等待
            while (connections.isEmpty()){
                this.wait();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return connections.remove(0);
    }
    public void returnConntion(Connection connection){
        connections.add(connection);
        this.notifyAll();
    }
}

  

原文地址:https://www.cnblogs.com/fffwhite/p/11478576.html

时间: 2024-07-30 02:58:03

JAVA写简单的数据库连接池的相关文章

【java】简单实现数据库连接池

一直在想java事务是怎么实现的,在原声jdbc的时候级别下,我们可以通过关掉autocommit 然后再手动commit.但是项目开发中基本上是看不见conection的.所以自己决定简单实现框架的一点皮毛功能.首先就是数据库连接池了 1. 先定义一个接口 import java.sql.Connection; public interface IConnectionPool { /** * 获取一个连接 * @return */ Connection getConnection(); /**

在Java中开源的数据库连接池

在Java中开源的数据库连接池有以下几种 : 1, C3P0 C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象. https://github.com/swaldman/c3p0 2,Proxool 这是一个Java SQL Driver驱动程序,提供了对你选择的其它类型的驱动程序的连接池封装.可以非常简单的移植到现存的代码中.完全可配

在JAVA中实现JDBC数据库连接池

[转自e良师益友网]Java程序员都很羡慕Windows ADO ,只需要new Connection 就可以直接从数据库连接池中返回Connection.并且 ADO Connection 是线程安全的,多个线程可以共用一个Connection,所以ASP程序一般都把getConnection 放在 Global.asa 文件中,在 IIS 启动时建立数据库连接.ADO 的Connection 和Result 都有很好的缓冲,并且很容易使用.推荐学习尚硅谷JDBC视频教程. 其实我们可以自己写

2018-07-24期 Java动态代理实现数据库连接池

package cn.sjq.proxy.ds.pool; import java.io.PrintWriter; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLExcep

自己实现的一个简单的数据库连接池

自己突然就找到了以前学习的感觉,要不是完了这几个月英爱能找一份比现在好点的工作,说实话还是有点后悔,但是没关系,从现在开始加油还来得及. 今天首先学的是数据库连接,就想到了实现一个数据库连接池,虽然很Lower 但是还是记录下来,一步一个脚印. 首先实现方法是创建一个连接池对象,里面放一个List对象用来保存数据库连接,自己写一个类,实现Connection对象,在里面的close方法里面将连接还给连接池. 然后在从数据库连接池中获取数据的时候用removeFirst方法,移除并返回第一个对象,

java 利用c3p0管理数据库连接池

数据库连接池类,用于获取数据库连接.利用单例模式保证所有的连接都只通过一个连接池管理. package com.mousewheel.dbcon; import java.io.InputStream; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; import com.mchange.v2.c3p0.ComboPooledDataSource; public clas

Java中Semaphore(信号量) 数据库连接池

计数信号量用来控制同时访问某个特定资源的操作数或同时执行某个指定操作的数量 A counting semaphore.Conceptually, a semaphore maintains a set of permits. Each acquire blocks if necessary until a permit is available, and then takes it. Each release adds a permit, potentially releasing a bloc

简单的数据库连接池实例(java语言)

1.概述 频繁的创建和销毁数据库连接消耗非常多的系统资源,创建一个池子, 管理一定数量的连接,用的时候去池中取,用完了放回池中,这时比较通用的做法. 2.关键字 LinkedList  synchronized  InvocationHandler  CountDownLatch 3. 代码 3.1 ConnectionPool.java package com.rocky.pool; import java.sql.Connection; import java.util.LinkedList

java学习笔记—第三方数据库连接池包1(29)

第一步:导入dbcp包 第二步:通过核心类连接数据 BasicDataSource它是javax.sql.DataSrouce的子类. 一个工具类:BasicDataSourceFactory. 手工通过代码连接数据库: BasicDataSource ds = new BasicDataSource(); //设置driver ds.setDriverClassName("com.mysql.jdbc.Driver"); //设置url ds.setUrl("jdbc:my