scala mysql连接池_Java与Scala的两种简易版连接池
Java版簡易版連接池:
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.LinkedList;
/**
* 簡易版的連接池
*/
public class ConnectionPool {
//靜態的Connection
private static LinkedListconnections;
//加載驅動
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//獲取連接 多線程訪問并發問題控制
public synchronized static Connection getConnectoin(){
try {
if (connections==null){
connections=new LinkedList();
for (int i =0;i<10;i++){
Connection conn=DriverManager.getConnection(
"jdbc:mysql://localhost:3306/spark",
"username",
"password"
);
connections.push(conn);
}
}
}catch (Exception e){
e.printStackTrace();
}
return connections.poll();
}
/**
* 還連接
* 返回連接
*/
public static void returnConnection(Connection conn){
connections.push(conn);
}
}
scala版簡易版連接池:
object ConnectionPoolUtil {
/**
* 需要設置的連接池數據
*/
private val max=10//連接池總數
private val connectionNum=10//每次產生連接數
private val pool=new util.LinkedList[Connection]()
private var conNum=0//當前連接池已經產生的連接數
//獲取連接
def getConnections(): Connection ={
//同步代碼塊
AnyRef.synchronized({
//加載驅動
for(i
val conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/spark",
"username",
"password"
)
pool.push(conn)
conNum+=1
}
pool.poll()
})
}
//加載驅動
def GetConn(): Unit ={
//控制加載
if (conNum
Class.forName("com.mysql.jdbc.mysql.")
}else if(conNum>=max&&pool.isEmpty){
println("Jdbc Pool had no connection now,please wait a moments")
Thread.sleep(2000)
GetConn()
}
}
//還連接
def returnConn(conn:Connection): Unit ={
pool.push(conn)
}
}
總結
以上是生活随笔為你收集整理的scala mysql连接池_Java与Scala的两种简易版连接池的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸿蒙系统有那些上市,鸿蒙上市整套系统究竟
- 下一篇: android listview自动加载