Mi aplicación ejecuta múltiples consultas en varios subprocesos.Multithreading con Apache DBCP
Ahora estoy creando una nueva conexión para cada consulta y quiero usar el grupo para mejorar la eficiencia.
¿Puede la agrupación DBCP de Apache trabajar en múltiples subprocesos simultáneamente, o se "bloqueará" en algunos métodos sincronizados por cada subproceso?
Si bloquea, ¿puedo usar algo más?
ACTUALIZACIÓN
En este artículo: link declaró:
Porque se sincronizan todos los métodos de la API JDBC de Oracle, si dos hilos intenta utilizar el objeto de conexión de forma simultánea, a continuación, uno será obligado a esperar hasta que el otro termine su uso.
Supongo que DBCP no será capaz de lidiar con eso?
También me estoy dando cuenta de que en este escenario el grupo no me ayudará, porque cada hilo pedirá una conexión y el hilo generará una nueva conexión cada vez (hasta que algunos de los hilos finalicen y devuelva la conexión a el conjunto)
Para complementar las excelentes respuestas a continuación, el único momento en que 'getConnection()' puede bloquearse es si ya no tiene 'Conexión' en su grupo (es decir, todas están ejecutando transacciones con su base de datos). Pero tan pronto como se haya completado una transacción, la 'Conexión' se devolverá a su grupo y 'getConnection()' devolverá una instancia de 'Conexión' válida. Aunque todo esto dependerá de la configuración de su grupo. – Jeach