[英]Wrapping a JDBC Connection singleton in a ThreadLocal
我正在研究使用普通JDBC
小型CRUD
應用程序,以及基於Connection
枚舉的單例,在閱讀實踐中的Java Concurrency的第一部分之后,我只是喜歡使用ThreadLocal
編寫線程安全代碼的方法,我的問題是:
在ThreadLocal
包裝全局JDBC
連接被認為是一種好習慣嗎?
在ThreadLocal中包裝全局JDBC連接被認為是一種好習慣嗎?
取決於細節。 如果存在大量線程,那么每個線程將打開它們自己的連接,這可能是禁止的。 然后,當線程處於休眠狀態時,您將會斷開連接。
最好使用可重入的連接池。 然后,您可以重用已打開但當前未使用的連接,但將連接數限制為您需要同時工作的最小連接數。 Apache的DBCP就是一個很好的例子,並且經過深思熟慮。
引用他們的文檔:
為每個用戶創建新連接可能非常耗時(通常需要多秒的時鍾時間),以便執行可能需要幾毫秒的數據庫事務。 在公共托管的Internet應用程序中,每個用戶打開一個連接可能是不可行的,因為同時用戶的數量可能非常大。 因此,開發人員通常希望在所有應用程序的當前用戶之間共享打開連接的“池”。 在任何給定時間實際執行請求的用戶數通常占活動用戶總數的很小百分比,並且在請求處理期間是唯一需要數據庫連接的時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.