Ứng dụng của tôi thực hiện nhiều truy vấn trong nhiều chuỗi.Đa luồng với Apache DBCP
Hiện tại tôi đang tạo kết nối mới cho mọi truy vấn và tôi muốn sử dụng hồ bơi để cải thiện hiệu quả.
Hồ bơi DBCP Apache có thể làm việc trong nhiều luồng cùng lúc hay không, hoặc nó sẽ "chặn" trên một số phương thức được đồng bộ cho mỗi chuỗi?
Nếu nó chặn, tôi có thể sử dụng cái gì khác không?
CẬP NHẬT
Trong bài viết này: link nói:
Bởi vì tất cả các phương pháp Oracle JDBC API được đồng bộ hóa, nếu hai luồng cố gắng sử dụng các đối tượng kết nối cùng một lúc, sau đó người ta sẽ buộc phải đợi cho đến khi người kia kết thúc việc sử dụng nó.
Vì vậy, tôi đoán DBCP sẽ không thể giải quyết vấn đề đó?
Tôi cũng nhận ra rằng trong trường hợp này, nhóm sẽ không giúp tôi, vì mỗi luồng sẽ yêu cầu kết nối và chuỗi sẽ tạo kết nối mới mỗi lần (cho đến khi một số chuỗi kết thúc và trả về kết nối hồ bơi)
Để bổ sung các câu trả lời tuyệt vời bên dưới, thời gian duy nhất 'getConnection()' có thể chặn là nếu bạn không có 'Connection' trong hồ bơi của bạn (nghĩa là: tất cả chúng đều đang thực hiện các giao dịch với cơ sở dữ liệu của bạn). Nhưng ngay sau khi một giao dịch kết thúc, 'Connection' sẽ được trả về hồ bơi của bạn và' getConnection() 'sẽ trả về một cá thể' Connection' hợp lệ. Mặc dù tất cả điều này sẽ phụ thuộc vào cấu hình của hồ bơi của bạn. – Jeach