jdbc 05 2021-01-05
连接池 maxactive最大连接2个对象
要实现第三个在等待状态,第三个处在阻塞状态
当同时执行三个对象 第三个要阻塞 我们使用线程
第一、三个线程 前两个中任意一个连接 close连接资源提交后第三个才能使用
第二、实现有三个线程 前两个执行5毫秒 第三个要等待5毫秒
package demo07;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import demo06.DBUtile;
//多线程 访问数据库
public class DbUtile {
public static void main(String[] args) {
Thread t1 = new DemoThread(5000,"线程1") ;
Thread t2 = new DemoThread(5000,"线程2") ;
Thread t3 = new DemoThread(5000,"线程3") ;
t1.start() ;
t2.start() ;
t3.start() ;
}
}
//线程 访问数据库
class DemoThread extends Thread{
//线程等待时间
int wait ;
//线程名字
String thread_Name ;
public DemoThread(int wait, String thread_Name){
this.wait = wait ;
this.thread_Name = thread_Name ;
}
@Override
public void run() {
Connection con = null ;
try {
con = DBUtile.getConnection() ;
System.out.println("线程名:"+thread_Name+"; 获得连接:"+con+",阻塞时间:"+wait);
Statement sta = con.createStatement() ;
String sql = "select 'hello' from dual" ;
ResultSet rs = sta.executeQuery(sql) ;
while(rs.next()){
String str = rs.getString(1) ;
System.out.println(str);
}
Thread.sleep(wait);
rs.close() ;
sta.close() ;
} catch (Exception e) {
e.printStackTrace();
} finally{
DBUtile.closeConnection(con);
}
}
}