我有一个在不同线程中使用的数据库对象:
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()
绕过同步。