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)

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值