以下のように接続プールから接続を取得し、接続で何かをするのに60秒かかる Runnable があります。
private static ConnectionPoolDataSource cpds; // MysqlConnectionPoolDataSource
public void run(){
while((System.currentTimeMillis()-created)<60000){
try(Connection conn = cpds.getPooledConnection().getConnection()){
//do something
}catch(SQLException sqle){}
}
}
スレッドが 60 秒後に終了すると、接続がプールに返され、新しいスレッドが作成されたときに接続を再利用できると想定しました。しかし、ネットワーク接続を一覧表示すると、作成されるスレッドが増えるにつれて、一覧が増え続けます。上記のように作成された接続はプールに正しく返されますか? その場合、接続を強制的に再利用するにはどうすればよいですか?