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();
}
}
}
分享到:
相关推荐
数据源连接池的基本用法,配置信息,代码案例、 实现数据源的动态切换和案例 数据源连接池的基本用法,配置信息,代码案例、 实现数据源的动态切换和案例 数据源连接池的基本用法,配置信息,代码案例、 实现...
并在学习掌握了实现连接池的关键技术后给出了一个较为高效的连接池管理策略,在这种策略思想的指导下实际开发出一个数据库连接池模块,使得上层应用通过本连接池访问数据库资源变得相对高效和容易,从实际上论证了...
【IT十八掌徐培成】Java基础第24天-06.数据源原理-连接池实现-c3p0第三方连接池使用.zip
对于一个简单的数据库引用,用于对数据库的访问不是很频繁。这时可以简单的在需要访问数据库是,创建一个连接,用完后关闭它,这样... 数据库连接池的基本原理是在内部对象池中维护一定数量的数据库连接,并对外暴露
java部分:程序基本概念、数据类型、流程控制、顺序、选择 、循环、跳转语句、变量、类、方法、实用类、JDBC、三层架构Druid连接池、Apache的DBUtils使用、Servlet等。 数据库部分:创建表、增删改查语句的书写等。 ...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
JDBC 2.0可选包 简介 DataSource与JNDI 连接池 RowSet 分布式事务与Optional Package 小结 第8章 SQLJ 简介 什么是SQLJ 准备开始 使用SQLJ SQLJ定制 小结 第9章 数据库...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
一个数据库连接池,JDBCInfo.java; 15 applet java可以编写两类程序,applications和applet,applications可以在控制台直接运行,与其他高级编程语言没有太大区别,而java的特色在于它具有编制小应用程序的功能,...
7.说出数据连接池的工作机制是什么 24 8. 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 25 9.一个页面在打开时,需要处理一些事情(比如弹出一个广告页),需要定义窗口的什么事件? 25 10. 描述...
一、实验目的: ...(5)理解数据库连接池的基本原理和思想,学会在tomcat服务器中配置数据库连接池,并掌握从连接池中获取连接的基本方法。 (6)初步理解数据访问层的基本设计方法,理解web的分层架构。
(3)连接池技术 4.中介器的实现 (1)查询规划模块 (2)结果合并过滤模块 5.元数据 (1)元数据的组成 (2)元数据的管理 6.包装器的实现 (1)数据库操作模块 (2)SQL查询生成XML文档模块 7.系统设计总结 六、系统测试...
同时,它还支持连接池技术,能够有效地管理数据库连接,提高系统的性能和稳定性。 除了基本的数据库操作外,这个jar包还提供了丰富的功能扩展,包括事务管理、批量操作、数据类型映射、结果集处理等,使得开发人员...
高并发复用数据库链接技术详解之数据库连接池 类加载器的高级特性(自定义类加器实现加密解密) iBATIS开源主流框架(实现半自动化hibernate) 企业实用技能之详解(眼睛横纹模式验证码防止恶意登陆) 动态页面的静态化...
JDBC:Java与数据库的交互,连接池的使用等。 Spring框架:Spring框架的基础概念、IOC容器、AOP等。 Hibernate框架:Hibernate框架的基础概念、ORM映射、HQL查询等。 Servlet与JSP:Web开发的基础知识、Servlet和JSP...
请写一个java程序实现线程连接池功能? 44.给定一个C语言函数,要求实现在java类中进行调用。 45.如何获得数组的长度? 46.访问修饰符“public/private/protected/缺省的修饰符”的使用 47.用关键字final修饰一...
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部分:程序基本概念、数据类型、流程控制、顺序、选择 、循环、跳转语句、变量、类、方法、实用类、JDBC、三层架构Druid连接池、Apache的DBUtils使用、Servlet等。 数据库部分:创建表、增删改查语句的书写等。 ...
爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL...
主要的技术如下:Redis缓存(Jedis客户端+连接池)实时热门数据统计;Spring Mail + Spring Task完成异步发送激活链接,邮件发送,验证;Druid(监控目的的数据库连接池),配置文件里面加密数据库密码;Freemarker:基于...