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个连接加入到连接池中。当需要连接时,从连接池中获取连接。如果连接池为空,线程将进入等待状态。当有连接释放时,唤醒等待线程,提供连接。同时,释放连接时也需要将连接加入到连接池中。