scala-mysql数据库资源池

package connect

import java.sql.{Connection, DriverManager}
import java.util

/**
* mysql数据库连接池
*/
object MySqlPool {
private val max = 8 //连接池连接总数
private val connectionNum = 10 //每次产生连接数
private val pool = new util.LinkedList[Connection]() //连接池
private var conNum = 0 //当前连接池已产生的连接数

//获取连接
def getJdbcConn(): Connection = {
//同步代码块
AnyRef.synchronized({
if (pool.isEmpty) {
//加载驱动
preGetConn()
for (i <- 1 to connectionNum) {
val conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "000000")
pool.push(conn)
conNum += 1
}
}
pool.poll()
})
}

//释放连接
def releaseConn(conn: Connection): Unit = {
pool.push(conn)
}

//加载驱动
private def preGetConn(): Unit = {
//控制加载
if (conNum < max && !pool.isEmpty) {
println("Jdbc Pool has no connection now, please wait a moments!")
Thread.sleep(2000)
preGetConn()
} else {
Class.forName("com.mysql.jdbc.Driver");
}
}
}
package connect


package test.testConnectionPoll

/**
* 测试获取数据库连接池
*/
object TestConnectPool {
def main(args: Array[String]): Unit = {
for (x <- 1 to 20) {
val con = MySqlPool.getJdbcConn()
println("当前连接:" + x + " " + con)
if (x == 6) {
println("释放的是:" + x + " " + con)
MySqlPool.releaseConn(con)
}
}
}
}

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值