La mia applicazione esegue più query in più thread.Multithreading con Apache DBCP
In questo momento sto creando una nuova connessione per ogni query e desidero utilizzare il pool per migliorare l'efficienza.
Il pool Apache DBCP può lavorare contemporaneamente su più thread o "bloccherà" su alcuni metodi sincronizzati per ogni thread?
Se blocca, posso usare qualcos'altro?
UPDATE
In questo articolo: link dichiarato:
Poiché tutti i metodi API JDBC Oracle sono sincronizzati, se due fili tentano di utilizzare l'oggetto di connessione contemporaneamente, allora uno sarà costretto ad aspettare fino a quando l'altro finisce il suo uso.
Quindi suppongo che DBCP non sarà in grado di gestirlo?
Mi sto anche rendendo conto che in questo scenario il pool non mi aiuterà, poiché ogni thread richiederà una connessione e il thread genererà una nuova connessione ogni volta (fino a quando alcuni thread terminano e restituisce la connessione a la piscina)
Per integrare le grandi risposte qui sotto, l'unica volta che 'getConnection()' può bloccare è se non ci sono più 'Connection' nel tuo pool (cioè: sono tutte le transazioni attualmente in esecuzione con il tuo database). Ma non appena una transazione è completata, il 'Connection' sarà restituito al tuo pool e' getConnection() 'restituirà un'istanza' Connection' valida. Anche se tutto ciò dipenderà dalla configurazione del tuo pool. – Jeach