jdbc 05 2021-01-05

2021-01-05  本文已影响0人  Gyalsten

连接池 maxactive最大连接2个对象
要实现第三个在等待状态,第三个处在阻塞状态
当同时执行三个对象 第三个要阻塞 我们使用线程
第一、三个线程 前两个中任意一个连接 close连接资源提交后第三个才能使用
第二、实现有三个线程 前两个执行5毫秒 第三个要等待5毫秒

Thread.sleep(5000).jpeg

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);
}
}
}

上一篇下一篇

猜你喜欢

热点阅读