2016-12-30 2 views
0

объектов подключения к базе данных я кеш через WeakHashMap, как, как:Аннулирование кэша при получении от WeakHashMap

Connection conn; 
    if (connectionCache.get(jdbc.getConnectionURL()) == null) { 
     conn = DriverManager.getConnection(jdbc.getConnectionURL(), jdbc.getUsername(), jdbc.getPassword()); 
     connectionCache.put(jdbc.getConnectionURL(), conn); 
    } else { 
     conn = connectionCache.get(jdbc.getConnectionURL()); 
    } 

Можно:

Если заявление проверяется и видел, что там уже есть объект в кэше и до Запуск кеша инструкции else недействителен?

ответ

0

Технически это так, но это очень редко. Решение довольно просто:

Если вы хотите использовать значение, установленное в if, то есть не null, вы можете просто назначить его в if, так что вам не нужно снова извлекать его из кеша в другом:

Connection conn; 
    if ((conn = connectionCache.get(jdbc.getConnectionURL())) == null) { 
     conn = DriverManager.getConnection(jdbc.getConnectionURL(), jdbc.getUsername(), jdbc.getPassword()); 
     connectionCache.put(jdbc.getConnectionURL(), conn); 
    } 
Смежные вопросы