2013-03-14 37 views

Trả lời

6

Mặc dù phương pháp executeUpdate có thể là chủ đề an toàn, báo cáo đã chuẩn bị không được thiết kế để sử dụng đồng thời. Điều này là do mỗi cá thể lưu trữ các tham số của bạn cho đến khi executeUpdate hướng dẫn nó gửi các tham số tới MySQL. Hơn nữa, vì các giao dịch được quản lý thông qua các đối tượng Connection, các kết nối chia sẻ đồng thời mà không đồng bộ hóa có thể cung cấp cho bạn các hành vi không mong muốn trên các lần commit/rollback.

Để thực hiện chèn từ nhiều luồng hoạt động đồng thời, mỗi chuỗi cần sử dụng riêng Connection và tự tạo PreparedStatement của riêng nó. Sử dụng nhiều câu lệnh chuẩn bị đồng thời trên cùng một cơ sở dữ liệu là luồng an toàn, vì đồng thời được quản lý ở phía RDBMS.

2

Không có gì trong Javadoc nói rằng Connection, a PreparedStatement, hoặc ResultSet là chủ đề an toàn và do đó không có phương pháp nào của chúng.

0

executeUpdate() không an toàn chỉ để sử dụng cho nhiều chủ đề.

bạn có thể tạo nhiều kết nối để mỗi luồng sử dụng kết nối JDBC của riêng nó với cơ sở dữ liệu.

Các vấn đề liên quan