Proxool线程池的简单实现demo
使用的jar包:ojdbc14.jar proxool-0.9.0.jar commons-logging-1.1.3.jar
代码分为两部分: ProxoolTest.java和proxool.xml
第一部分代码:
ProxoolTest.java
package com.test.proxool;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import org.logicalcobwebs.proxool.configuration.JAXPConfigurator;
public class ProxoolTest {
int beginIndex = 0; // 待取记录起始数
int endIndex = 10; // 待取得记录终止跳
String MySQLdbTableName = "service";
String MySQLreq = "select * from " + MySQLdbTableName;
/**
* proxool方式测试
*
* @throws Exception
*/
public void proxoolMethodTest() throws Exception {
// Java应用中先要加载配置文件,否则谁知道你配置给谁用的
// JAXPConfigurator.configure("proxool.xml", false);
InputStream in = getClass().getResourceAsStream('/'+"proxool.xml");
Reader reader = null;
reader = new InputStreamReader(in, "GBK");
JAXPConfigurator.configure(reader, false);
// 1:注册驱动类,这次这个驱动已经不是Oracle的驱动了,是Proxool专用的驱动
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
// 2:创建数据库连接,这个参数是一个字符串,是数据源的别名,在配置文件中配置的timalias,参数格式为:proxool.数据源的别名
Connection conn = DriverManager.getConnection("proxool.timalias");
for(int i = 0; i< 20; i++)
conn = DriverManager.getConnection("proxool.timalias");
// 3:创建执行SQL的对象
Statement stmt = conn.createStatement();
// 4:执行SQL,并获取返回结果
ResultSet res = stmt.executeQuery(MySQLreq);
// 5:处理返回结果,此处打印查询结果
ResultSetMetaData rsmd = res.getMetaData();
int columnCount = rsmd.getColumnCount();
int rowCount = 0;
while (res.next()) {
System.out.print(rowCount + " ");
rowCount++;
for (int j = 1; j <= columnCount; j++) {// 循环处理
String strRes = res.getString(j);
System.out.print(strRes + "|\t");
}
System.out.println();
}
// 6:关闭数据库连接
conn.close();
}
public static void main(String[] args) throws Exception {
ProxoolTest test = new ProxoolTest();
test.proxoolMethodTest();
}
}
第二部分代码:proxool.xml
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
<proxool>
<!--数据源的别名-->
<alias>oracle1</alias>
<!--url连接串-->
<driver-url>jdbc:oracle:thin:@198.131.89.16:1521:orclTest</driver-url>
<!--驱动类-->
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<driver-properties>
<!--用户名-->
<property name="user" value="gejinwen"/>
<!--密码-->
<property name="password" value="123456"/>
</driver-properties>
<!--最大连接数(默认5个),超过了这个连接数,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定 -->
<maximum-connection-count>5</maximum-connection-count>
<!--最小连接数(默认2个)-->
<minimum-connection-count>1</minimum-connection-count>
<!--proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 默认30秒-->
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<!--没有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受-->
<maximum-new-connections>6</maximum-new-connections>
<!--最少保持的空闲连接数(默认2个)-->
<prototype-count>5</prototype-count>
<!--在使用之前测试-->
<test-before-use>true</test-before-use>
<!--用于保持连接的测试语句 -->
<house-keeping-test-sql>show tables</house-keeping-test-sql>
</proxool>
</something-else-entirely>
注释已经很清楚了,没有什么多说的了。
Proxool线程池的简单实现demo的更多相关文章
- JAVA中线程池的简单使用
比如现在有10个线程,但每次只想运行3个线程,当这3个线程中的任何一个运行完后,第4个线程接着补上.这种情况可以使用线程池来解决,线程池用起来也相当的简单,不信,你看: package com.dem ...
- 基于线程池的多线程售票demo(原创)
废话不多说,直接就开撸import org.springframework.util.StopWatch;import java.util.concurrent.*;/** * 基于线程池实现的多线程 ...
- Executor线程池的简单使用
我们都知道创建一个线程可以继承Thread类或者实现Runnable接口,实际Thread类就是实现了Runnable接口. 到今天才明白后端线程的作用:我们可以开启线程去执行一些比较耗时的操作,类似 ...
- Java线程池的简单使用
最近由于公司的业务需求,需要使用线程池来进行对数据进行处理,所以就简单的学习了一下线程池的东西,刚接触感觉挺难的,不过使用了就不感觉那么难了,还是蛮简单的, package com.yd.sms.jo ...
- QT 线程池 + TCP 小试(一)线程池的简单实现
*免分资源链接点击打开链接http://download.csdn.net/detail/goldenhawking/4492378 很久以前做过ACE + MFC/QT 的中轻量级线程池应用,大概就 ...
- Java 线程池ThreadPoolExecutor简单应用
什么是线程池: 线程池就是控制线程的一个池子.用来控制线程数量. 为什么要使用线程池: 1.避免系统反复创建和销毁线程影响执行的时间(创建+销毁>>执行时间时) 2.控制线程数量.线程过多 ...
- io流+网络+线程池 实现简单的多客户端与服务器端通信
1 import java.io.IOException; 2 import java.io.InputStream; 3 import java.io.OutputStream; 4 import ...
- c++ 11 线程池的简单封装
#include <condition_variable> #include <queue> #include <thread> #include <vect ...
- 关于C#线程,线程池和并行运算的简单使用和对比
转自:https://www.cnblogs.com/jeffwongishandsome/archive/2010/11/12/1876137.html 先大概看一下控制台应用程序的Main方法的主 ...
随机推荐
- visio扩大画布的大小
鼠标移到画布的边界按住Ctrl,即可扩大画布的大小
- mybatis实战教程(mybatis in action)之四:实现关联数据的查询
有了前面几章的基础,对一些简单的应用是可以处理的,但在实际项目中,经常是关联表的查询,比如最常见到的多对一,一对多等.这些查询是如何处理的呢,这一讲就讲这个问题.我们首先创建一个Article 这个表 ...
- 视频中的DTS与PTS的理解
原文地址:http://blog.itpub.net/30004768/viewspace-1338882/ DTS(解码时间戳)和PTS(显示时间戳)分别是解码器进行解码和显示帧时相对于SCR(系 ...
- 实现WinForm窗体的美化(借助第三方控件)
在winform项目中,其实皮肤就是一个第三方的控件,名字是IrisSkin4.dll只要添加到你的工具箱里就可以和其它控件一样使用了 一.添加控件IrisSkin4.dll.方法: 先把IrisSk ...
- Scala, Groovy, Clojure, Jython, JRuby and Java ----我们的工作语言
在曾经的一封邮件中,我指出在众多改变中,最明显的一个就是:在java领地上的JVM上使用其它流行的语言的发展变得越来越快.一些老的和新的创建的基于JVM的语言---JRuby 和 Jython ,Ja ...
- php类自动载入
在编写面向对象(OOP) 程序时,很多开发者为每个类新建一个 PHP 文件. 这会带来一个烦恼:每个脚本的开头,都需要包含(include)一个长长的列表(每个类都有个文件). 在 PHP 5 中,已 ...
- angular多个控制器如何共享数据
多个控制器之间共享数据,通常两种方式,一种是在控制器里通过$scope.$$prevSibling或$scope.$$nextSibling获得另一个控制器的作用域对象. 第二种是通过服务的方式,也是 ...
- 每日英语:Do Successful People Need Sleep?
George Washington and his Revolutionary War victories. Robert Frost and the composition of 'Stopping ...
- firewalld增加端口访问权限
firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload
- jQuery 效果 - slideToggle() 方法
实例 通过使用滑动效果,在显示和隐藏状态之间切换 <p> 元素: $(".btn1").click(function(){ $("p").slide ...