用Java的多线程测试JDBC连接
2012-06-27 07:52:26 来源:WEB开发网核心提示: [Java]代码.package com.daily.www.web;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java
[Java]代码.
package com.daily.www.web; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import com.mysql.jdbc.Connection; import com.mysql.jdbc.Statement; /** * @TODO 描述: 类 - * @author RgoneKing @date 2012-6-26 下午11:07:03 @version 版本号码V1.0 * ============================================================================ * 版权所有 2012 成都等蝶科技发展有限公司,并保留所有权利。 * ---------------------------------------------------------------------------- * 提示:在未取得等蝶科技商业授权之前,您不能将本软件应用于商业用途,否则等蝶科技将保留追究的权力。 * ---------------------------------------------------------------------------- * 官方网站:http://www.dengdie.com * ---------------------------------------------------------------------------- * ============================================================================ */ public class MultiThreadTestJDBC { public static void main(String[] args) throws InterruptedException { int threadNum = 200; long tStart = System.currentTimeMillis(); // 打印开始标记 System.out.println(Thread.currentThread().getName() + "开始"); for (int ii = 0; ii < threadNum; ii++) {// 开threadNum个线程 Thread t = new WorkerThread(); t.start(); } while (true) {// 等待所有子线程执行完 if (!WorkerThread.hasThreadRunning()) { break; } Thread.sleep(500); } // 打印结束标记 System.out.println(Thread.currentThread().getName() + "结束."); long tEnd = System.currentTimeMillis(); System.out.println("总共用时:" + (tEnd - tStart) + "millions"); } public static class WorkerThread extends Thread { private static List<Thread> runningThreads = new ArrayList<Thread>(); public WorkerThread() { } @Override public void run() { regist(this);// 线程开始时注册 // 打印开始标记 System.out.println(Thread.currentThread().getName() + "开始..."); connectToMysql(); unRegist(this);// 线程结束时取消注册 // 打印结束标记 System.out.println(Thread.currentThread().getName() + "结束."); } public void regist(Thread t) { synchronized (runningThreads) { runningThreads.add(t); } } public void unRegist(Thread t) { synchronized (runningThreads) { runningThreads.remove(t); } } public static boolean hasThreadRunning() { // 通过判断runningThreads是否为空就能知道是否还有线程未执行完 return (runningThreads.size() > 0); } private void connectToMysql() { // TODO Auto-generated method stub // 驱动程序名 String driver = "com.mysql.jdbc.Driver"; // URL指向要访问的数据库名jdbc_test String url = "jdbc:mysql://127.0.0.1:3306/jdbc_test"; // MySQL配置时的用户名 String user = "root"; // Java连接MySQL配置时的密码 String password = "123"; try { // 加载驱动程序 Class.forName(driver); // 连续数据库 Connection conn = (Connection) DriverManager.getConnection(url, user, password); if (!conn.isClosed()) System.out.println("Succeeded connecting to the Database!"); // statement用来执行SQL语句 Statement statement = (Statement) conn.createStatement(); // 要执行的SQL语句 String sql = "select * from student"; ResultSet rs = statement.executeQuery(sql); System.out.println("-----------------"); System.out.println("执行结果如下所示:"); System.out.println("-----------------"); System.out.println(" 学号" + "\t" + " 姓名"); System.out.println("-----------------"); String name = null; while (rs.next()) { System.out.println(rs.getString("sno") + "\t" + name); } rs.close(); conn.close(); } catch (ClassNotFoundException e) { System.out.println("Sorry,can`t find the Driver!"); e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } }
更多精彩
赞助商链接