2013-03-28 89 views
0

我有一個靜態的java連接到數據庫。爲什麼在executeQuery()處理過程中java連接不能createStatement()?

1日螺紋

與我的靜態連接我創建一個聲明,調用的executeQuery()方法。此時我正在等待,因爲查詢結果非常大,我必須等待超過15分鐘。

第二螺紋

用相同的靜態連接我試圖做出的createStatement()的調用方法。這裏第二個線程被阻塞。

有很多方法可以解決這個問題,但是我不知道爲什麼這個問題不應該起作用。有任何想法嗎?

+0

沒有向我們展示我們無法辨別的代碼。你可能有一些靜態同步方法或類似的東西。 –

+4

看起來你正在分享連接,所以這一定會發生。您可能需要一個數據庫池。 – karmanaut

回答

0

以常見的方式,通過Sockets機制實現到數據庫的單個Connection。更好的說,你的單一的connection是某種管道,它用於每次執行一次的具體查詢。

很難想象這樣的最佳和高性能代碼實現,儘管一個套接字多個查詢及其結果並行發送。這種實現可能會導致與數據包混淆,至少會導致數據包丟失。

由於karmanaut在註釋中提到,您需要實現數據庫池,即連接池,它將同時用於每個語句。

相關問題