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?
risposta
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.
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.
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.
- 1. Java: ServerSocket.accept è threadsafe?
- 2. È NSUserDefaults threadsafe
- 3. java.util.concurrent.Future threadsafe?
- 4. domanda java: è un metodo?
- 5. Datastax - Is PreparedStatement threadsafe?
- 6. @GuardedBy, @ThreadSafe, @ NotThreadSafe
- 7. Cosa usare: executeUpdate() o execute()?
- 8. Python: è os.read()/os.write() su un file os.pipe() threadsafe?
- 9. Iniettando un metodo Java _prima_ un altro metodo è chiamato
- 10. Proprietà threadsafe generica
- 11. annotazione chiamato ThreadSafe
- 12. È random_shuffle threadsafe? e usando rand_r se non lo è
- 13. SQLite - eccezione executeUpdate non rilevata quando il database non esiste? (Java)
- 14. Ruby's Net :: HTTP threadsafe?
- 15. Un DAO per thread o DAO threadsafe?
- 16. Statement.execute (sql) vs executeUpdate (sql) ed executeQuery (sql)
- 17. È corretto chiamare il metodo astratto dal costruttore in Java?
- 18. che cosa è un metodo astratto su un'interfaccia in Java
- 19. Perché è consentito avere un metodo principale finale in java?
- 20. Come posso rendere AllocateHwnd threadsafe?
- 21. Qual è l'ambito predefinito di un metodo in Java?
- 22. parametro finale in un metodo in Java
- 23. Perché è necessario un combinatore per ridurre il metodo che converte il tipo in java 8
- 24. Perché sovrascrivere il metodo clone in Java
- 25. Il comportamento di equals (metodo) in Java
- 26. Come utilizzare il metodo readline() in Java?
- 27. Come ottenere il nome stringa di un metodo in java?
- 28. Aggiunta a un elenco in un ciclo Parallel.ForEach in maniera threadsafe
- 29. Come utilizzare il metodo toString in Java?
- 30. Come funziona il metodo equals() in Java
Vedere questo .. http://stackoverflow.com/questions/8828202/is-executeupdate-method-in-java-thread-safe – Varun