異なるスレッドで使用されるデータベース オブジェクトがあります。
import java.sql.Connection;
import oracle.ucp.jdbc.PoolDataSourceFactory;
import oracle.ucp.jdbc.PoolDataSource;
public class Database
{
private final PoolDataSource pool = PoolDataSourceFactory.getPoolDataSource();
protected Connection connect ()
{
synchronized (pool) { return pool.getConnection(); }
}
protected void disconnect (Connection connection)
{
synchronized (pool) { connection.close(); }
}
}
pool
メンバーへのアクセスを同期する必要がありますか? それとも、明示的な同期を回避するだけで十分でしょうか?
disconnect
同期が必要な場合、接続を閉じるために呼び出す必要がないため、コードが壊れます。クラスの一部のコードはconnection.close()
、同期をバイパスして呼び出すことができます。