But if your going to sync a variable, you can't read/write it outside of
proper synchronization. Maybe I am just not following the code...
Noble Paul ??????? ?????? wrote:
one JdbcDataSource has only one connection the connection object/the
connLastUsed etc needs to be protected.
On Tue, Nov 18, 2008 at 9:24 PM, Mark Miller <[EMAIL PROTECTED]> wrote:
JdbcDataSource looks like it has a little funkiness going on. Why is there a
synchronize block there? Can multiple threads call getConnection
concurrently? If they can, this is not thread safe anyway. If they can't,
why is factory.call (or is it the close?) being protected with a sync?
private Connection getConnection() throws Exception {
long currTime = System.currentTimeMillis();
if (currTime - connLastUsed > CONN_TIME_OUT) {
synchronized (this) {
Connection tmpConn = factory.call();
close();
connLastUsed = System.currentTimeMillis();
return conn = tmpConn;
}
} else {
connLastUsed = currTime;
return conn;
}
}