`

java 数据连接池的最基本的实现

 
阅读更多
1.连接池类
package com.cgm.threadpool;

import java.sql.Connection;
import java.sql.DriverManager;
import java.util.ArrayList;
import java.util.List;

public class ConUtils {

public static  Connection conn;

private static List<Connection> pool=new ArrayList<Connection>();
static{
   try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@127.0.0.1:1521:ORCL";
for (int i = 0; i < 3; i++) {
   //创建三个链接
conn= DriverManager.getConnection(url,"scott","tiger");
pool.add(conn);  //三个链接放入连接池
}
System.out.println("链接是"+pool);
} catch (Exception e) {
      throw new RuntimeException(e.getMessage(),e);
}
 
}

public static  Connection getConnection(){
synchronized (pool) {
conn= pool.remove(0);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("====还有多少个=="+pool.size());
return conn;
}
}

//还回链接
public  static void  back(Connection con){
System.err.println("还连接:"+con);
pool.add(con);
}


}

//2子线程
package com.cgm.threadpool;

import java.sql.Connection;
import java.sql.Statement;

public class MyThread extends  Thread{

@Override
public void run() {
Connection conn=null;

try {
conn=ConUtils.getConnection();  //取得链接
System.err.println(this.getName()+","+conn);
conn.setAutoCommit(false);//设置失去的开始
String sql=" insert into userss values('"+this.getName()+"','Tom','49')";
Statement st=conn.createStatement();
st.execute(sql);
conn.commit();

  //
//new MyThread().start();
//Thread.sleep(100);

System.out.println(this.getName()+"子线程执行完成");
// Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}finally{

try {
conn.setAutoCommit(true);
//conn.close(); 不能管 关闭的链接是不能用了
ConUtils.back(conn);  //还连接
} catch (Exception e2) {
e2.printStackTrace();
}

}


}
   
}





//主线程测试
package com.cgm.threadpool;

import java.sql.Connection;
import java.sql.Statement;

public class ThreadDemo  {
public static void main(String[] args) throws Exception {

/**
Connection conn=ConUtils.getConnection();  //取得链接
conn.setAutoCommit(false);//设置失去的开始
String sql=" insert into userss values('AA','libao','44')";
Statement st=conn.createStatement();
st.execute(sql);
new MyThread().start();
Thread.sleep(100);
conn.commit();
System.out.println("主线程执行完成");
*/
for (int i = 0; i < 14; i++) {
new MyThread().start();
}

}
}








分享到:
评论

相关推荐

    关于数据库连接池和动态数据源的实现

    数据源连接池的基本用法,配置信息,代码案例、 实现数据源的动态切换和案例 数据源连接池的基本用法,配置信息,代码案例、 实现数据源的动态切换和案例 数据源连接池的基本用法,配置信息,代码案例、 实现...

    基于JAVA JSP数据库连接池的研究与实现的毕业设计,使用数据库连接池方式能对数据库的连接进行管理和维护,上层应用程序通过数据

    并在学习掌握了实现连接池的关键技术后给出了一个较为高效的连接池管理策略,在这种策略思想的指导下实际开发出一个数据库连接池模块,使得上层应用通过本连接池访问数据库资源变得相对高效和容易,从实际上论证了...

    【IT十八掌徐培成】Java基础第24天-06.数据源原理-连接池实现-c3p0第三方连接池使用.zip

    【IT十八掌徐培成】Java基础第24天-06.数据源原理-连接池实现-c3p0第三方连接池使用.zip

    Java建立数据库连接池

    对于一个简单的数据库引用,用于对数据库的访问不是很频繁。这时可以简单的在需要访问数据库是,创建一个连接,用完后关闭它,这样...  数据库连接池的基本原理是在内部对象池中维护一定数量的数据库连接,并对外暴露

    学生信息管理系统(实现增删改查操作)Java+Servlet+HTML+CSS+数据库

    java部分:程序基本概念、数据类型、流程控制、顺序、选择 、循环、跳转语句、变量、类、方法、实用类、JDBC、三层架构Druid连接池、Apache的DBUtils使用、Servlet等。 数据库部分:创建表、增删改查语句的书写等。 ...

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

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    Java数据编程指南

    JDBC 2.0可选包 简介 DataSource与JNDI 连接池 RowSet 分布式事务与Optional Package 小结 第8章 SQLJ 简介 什么是SQLJ 准备开始 使用SQLJ SQLJ定制 小结 第9章 数据库...

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

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    java jdk实列宝典 光盘源代码

    一个数据库连接池,JDBCInfo.java; 15 applet java可以编写两类程序,applications和applet,applications可以在控制台直接运行,与其他高级编程语言没有太大区别,而java的特色在于它具有编制小应用程序的功能,...

    2017史上最全Java面试大全.doc

    7.说出数据连接池的工作机制是什么 24 8. 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 25 9.一个页面在打开时,需要处理一些事情(比如弹出一个广告页),需要定义窗口的什么事件? 25 10. 描述...

    JDBC数据库编程实验

    一、实验目的: ...(5)理解数据库连接池的基本原理和思想,学会在tomcat服务器中配置数据库连接池,并掌握从连接池中获取连接的基本方法。 (6)初步理解数据访问层的基本设计方法,理解web的分层架构。

    基于XML和JAVA的异构数据库集成中间件系统的研究和实现

    (3)连接池技术 4.中介器的实现 (1)查询规划模块 (2)结果合并过滤模块 5.元数据 (1)元数据的组成 (2)元数据的管理 6.包装器的实现 (1)数据库操作模块 (2)SQL查询生成XML文档模块 7.系统设计总结 六、系统测试...

    2024java连接mysql数据库的jar包.zip

    同时,它还支持连接池技术,能够有效地管理数据库连接,提高系统的性能和稳定性。 除了基本的数据库操作外,这个jar包还提供了丰富的功能扩展,包括事务管理、批量操作、数据类型映射、结果集处理等,使得开发人员...

    JAVA高并发高性能高可用高扩展架构视频教程

    高并发复用数据库链接技术详解之数据库连接池 类加载器的高级特性(自定义类加器实现加密解密) iBATIS开源主流框架(实现半自动化hibernate) 企业实用技能之详解(眼睛横纹模式验证码防止恶意登陆) 动态页面的静态化...

    2023Java高频面试题

    JDBC:Java与数据库的交互,连接池的使用等。 Spring框架:Spring框架的基础概念、IOC容器、AOP等。 Hibernate框架:Hibernate框架的基础概念、ORM映射、HQL查询等。 Servlet与JSP:Web开发的基础知识、Servlet和JSP...

    JAVA面试题最全集

    请写一个java程序实现线程连接池功能? 44.给定一个C语言函数,要求实现在java类中进行调用。 45.如何获得数组的长度? 46.访问修饰符“public/private/protected/缺省的修饰符”的使用 47.用关键字final修饰一...

    (超赞)JAVA精华之--深入JAVA API

    2.5 用连接池提高Servlet访问数据库的效率 2.6 应用服务器的集群策略及Java EE 5.0 2.7 Servlet中的Listener的应用 2.8 JSTL(JSP标准标签库)介绍 3 JAVA扩展 3.1 Log4j基本使用方法 3.2 Dom4j 使用简介 3.3 Java ...

    学生信息管理系统(仅实现新增和查询)Java+Servlet+HTML+CSS+数据库

    java部分:程序基本概念、数据类型、流程控制、顺序、选择 、循环、跳转语句、变量、类、方法、实用类、JDBC、三层架构Druid连接池、Apache的DBUtils使用、Servlet等。 数据库部分:创建表、增删改查语句的书写等。 ...

    使用JDBC连接,DBCP连接池实现的基础记账功能小程序。增删改查的练手实践项目。.zip

    爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL...

    基于Java Web(springboot)实现房产平台 【100011241】

    主要的技术如下:Redis缓存(Jedis客户端+连接池)实时热门数据统计;Spring Mail + Spring Task完成异步发送激活链接,邮件发送,验证;Druid(监控目的的数据库连接池),配置文件里面加密数据库密码;Freemarker:基于...

Global site tag (gtag.js) - Google Analytics