2013-03-14 15 views

Odpowiedz

6

Podczas gdy metoda sama w sobie może być bezpieczna dla wątków, przygotowane instrukcje nie są przeznaczone do jednoczesnego użycia. Dzieje się tak, ponieważ każda instancja przechowuje twoje parametry do momentu, gdy executeUpdate nakazuje wysłać parametry do MySQL. Co więcej, ponieważ transakcje są zarządzane za pomocą obiektów o numerach Connection, współdzielenie połączeń jednocześnie bez synchronizacji może spowodować niepożądane zachowanie podczas zatwierdzania/wycofywania zmian.

Aby wstawki z wielu wątków działały równolegle, każdy wątek musi używać własnego Connection i utworzyć własny PreparedStatement. Używanie wielu przygotowanych instrukcji jednocześnie w tej samej bazie danych jest bezpieczne dla wątków, ponieważ współbieżność jest zarządzana po stronie RDBMS.

2

Nie ma nic w Javadoc, który mówi albo Connection,PreparedStatement, lub ResultSet jest threadsafe i dlatego żaden z ich metody są albo.

0

executeUpdate() nie jest bezpieczny w użyciu dla wielu wątków.

można utworzyć wiele połączeń, aby każdy wątek korzystał z własnego połączenia JDBC z bazą danych.

Powiązane problemy