2013-03-14 10 views
7

Nella mia applicazione, ci sono più thread che cercano di inserire ad un MySQL database.Is executeUpdate metodo thread-safe per usare? Come posso fare questo lavoro?Il metodo executeUpdate in Java è un thread-safe?

+2

Vedere questo .. http://stackoverflow.com/questions/8828202/is-executeupdate-method-in-java-thread-safe – Varun

risposta

6

Mentre il metodo executeUpdate in sé può essere thread-safe, le istruzioni preparate non sono progettate per essere utilizzate contemporaneamente. Questo perché ogni istanza memorizza i parametri fino a quando executeUpdate ordina di inviare i parametri a MySQL. Inoltre, poiché le transazioni sono gestite tramite gli oggetti Connection, la condivisione simultanea delle connessioni senza sincronizzazione potrebbe comportare un comportamento indesiderato su commit/rollback.

Per realizzare inserti di molteplici fili lavorare contemporaneamente, ogni thread deve utilizzare il proprio Connection e dare il proprio PreparedStatement. L'utilizzo di più istruzioni preparate contemporaneamente sullo stesso database è sicuro, poiché la concorrenza viene gestita sul lato RDBMS.

2

Non c'è nulla nel Javadoc che dice che uno Connection, a PreparedStatement, o uno ResultSet è thread-safe, e quindi nessuno dei loro metodi sono entrambi.

0

executeUpdate() non è thread-safe da utilizzare per più thread.

è possibile effettuare più connessioni in modo che ogni thread utilizzi la propria connessione JDBC al database.

Problemi correlati