淘先锋技术网

首页 1 2 3 4 5 6 7

Java和MySQL是目前应用广泛的两个技术,它们的结合之处就是数据库连接。但是,在高并发、高并行的业务场景下,连接管理的工作可能是一项繁琐的任务,能否通过连接池技术来优化呢?答案是肯定的,Java实现MySQL数据库连接池的方法如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.LinkedList;
public class ConnectionPool {
private static LinkedListconnectionQueue;
static {
connectionQueue = new LinkedList();
try {
Class.forName("com.mysql.jdbc.Driver");
for (int i = 0; i< 10; i++) {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", "");
connectionQueue.add(conn);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public Connection getConnection() {
Connection conn = null;
synchronized (connectionQueue) {
while (connectionQueue.size() == 0) {
try {
connectionQueue.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (!connectionQueue.isEmpty()) {
conn = connectionQueue.removeFirst();
}
}
return conn;
}
public void releaseConnection(Connection conn) {
if (conn != null) {
synchronized (connectionQueue) {
connectionQueue.add(conn);
connectionQueue.notifyAll();
}
}
}
}

以上代码中,首先加载了驱动器,并创建了10个连接加入到连接池中。当需要连接时,从连接池中获取连接。如果连接池为空,线程将进入等待状态。当有连接释放时,唤醒等待线程,提供连接。同时,释放连接时也需要将连接加入到连接池中。