2013-04-17 76 views
3

如果我在一個功能的Java JDBC線程安全

void UpdateDatabase(conn) { 
    createStatement 
    executeStaement 
    getResult 
} 

以下順序是,如果你改變它一點點

void updateDatabase() { 
    getConnection 
    createStatement 
    executeStaement 
    getResult 
} 

它將這一順序調用Java

+1

我想你需要向我們展示更多的代碼片段,比如'createStatement','executeStaement'和'getResult'使用的參數。你怎麼調用'UpdateDatabase'函數 – Apurv

+0

也取決於你使用的數據庫。通常數據庫將管理併發請求。所以你不會擔心數據庫客戶端的線程安全。 – anoopelias

+0

可能重複[是java.sql.Connection線程安全?](http://stackoverflow.com/questions/1531073/is-java-sql-connection-thread-safe) –

回答

0

多線程安全的絕對是線程安全的

+0

好吧,問題是「_這個調用序列線程安全_」。而不是如何使這個線程安全 – Apurv

2

Asuming your threads does not share any狀態或以其他方式正確同步共享狀態時,只有在查看JVM內部發生的情況時,執行纔是線程安全的。但更重要的是,如果您的數據仍然可能被破壞。

每個JDBC連接一次只能由一個線程使用,您正在執行的操作。然而,數據庫系統定義了四個隔離級別,定義了併發事務可以看到哪些數據狀態。如果您的併發交易沒有觸及相同的數據,那就罰款。如果他們這樣做,看看你的數據庫的隔離級別。