考虑一个简单的线程池。线程池的主要目的是重用(回收)线程以限制最大线程数并防止删除和创建线程,我是对的吗?
最近我读过(维基百科连接池),在Java EE中,数据库连接是由服务器汇总的,但我不知道为什么?
的的问题:
提前致谢。
答案 0 :(得分:2)
数据库连接池解决方法与此处提到的线程池非常相似。以下是主要原因。
public static Connection getConnection() { Connection con = null; try { Context initContext = new InitialContext(); Context envContext = (Context) initContext.lookup("java:/comp/env"); DataSource dataSource = (DataSource) envContext.lookup("jdbc/db"); con = dataSource.getConnection(); } catch (NamingException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return con; }
数据库将假设连接仍处于活动状态且其连接 应用程序服务器负责保持连接 池存活(当然由用户配置)并避免 连接超时。
当您的应用程序代码通过调用connection.close()请求关闭连接时,此连接未关闭并实际返回到池中,以便来自池的进一步连接请求将使用此连接。