码迷,mamicode.com
首页 > 其他好文 > 详细

Redis连接池

时间:2018-11-17 14:35:25      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:sleep   obj   ISE   nec   驱动   mys   syn   list   manage   

package com.qf.spark.scala

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


/**
* 连接池
*/
object ConnectionPoolUtil {
/**
* 需要设置的连接池数据
*/
private val max = 20 //连接池连接总数
private val connectionNum = 10 //每次产生连接数
private val pool = new util.LinkedList[Connection]() //连接池
private var conNum = 0 //当前连接池已经产生的连接数

//获取连接
def getConnections():Connection ={
//同步代码块
AnyRef.synchronized({
if(pool.isEmpty){
//加载驱动
GetConn
for(i<- 1 to connectionNum){
val conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/hadoop",
"root",
"123"
)
pool.push(conn)
conNum += 1
}
}
pool.poll()
})
}
//加载驱动
def GetConn(): Unit ={
//控制加载
if(conNum < max && pool.isEmpty){
Class.forName("com.mysql.jdbc.Driver")
}else if (conNum>=max && pool.isEmpty){
println("Jdbc Pool has no connection now,please wait a moments!")
Thread.sleep(2000)
GetConn
}
}
def returnConn(conn:Connection): Unit ={
pool.push(conn)
}
}

Redis连接池

标签:sleep   obj   ISE   nec   驱动   mys   syn   list   manage   

原文地址:https://www.cnblogs.com/hdfs/p/9973650.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!