簡體   English   中英

使用相同的語句對象在多個線程中執行多個查詢?

[英]using same statement object to execute multiple queries in multiple threads?

重用java.sql.Statement對象在多個線程中同時執行多個查詢是一個好主意嗎?

我在某處讀過,建議重用同一條語句對象,但這是順序執行。

Statement statement = con.createStatement();

現在,如果我使用單個語句實例在多個線程中同時為多個查詢運行executeUpdate()

請注意,它不是PreparedStatement,並且沒有任何ResultSet。

我認為答案取決於兩種情況:

  1. 如果查詢是互斥的,那應該沒問題。
  2. 如果查詢正在處理同一組數據,則可能存在問題。

我的理解正確嗎?

謝謝。

不,這絕對不是一個好主意。 首先, ResultSetsStatement關聯。 您不希望在另一個線程突然發出新查詢時遍歷ResultSet (至少在驅動程序運行良好的情況下, ResultSet才會關閉)。

也沒有地方表明Statements是線程安全的。 如果沒有明確指出,則它不是線程安全的(至少在大多數情況下)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM