2011-06-29 49 views
1

在共同的DBMS,讀/寫操作已經執行的鎖定系統含蓄,使程序員不必處理這種複雜的鎖定機制。但是爲什麼當我們在應用程序級別編寫代碼時,通常我們在寫入時仍然需要使用某些鎖定/同步函數。做寫操作時,需要同步功能DBMS

例如

公共同步writetoDBMS(){ SQL語句寫入DBMS}

+1

考慮使用數據庫事務。 「同步」僅僅是對特定對象的諮詢鎖定*;該數據庫是一個外部資源,不一定綁定到'synchronized'的範圍。他們做了不同的事情,但這個問題對於需要做什麼或保護什麼不是很「清楚」。 – 2011-06-29 06:29:56

+0

是的,它是由於這樣的事實,大多數應用程序是多線程的,最線程的併發更新,插入刪除記錄,如果你想在你的應用程序來管理這種行爲進行管理,你會寫這樣的代碼,以確保例如兩個更新語句不應該在同一時間執行,所以你手動編寫這樣的代碼,但在我看來,你可以使用發表@pst邏輯。 –

回答

1

@Kit何:同步關鍵字之前方法僅舉確保只有單個線程在時間封閉碼和相同的對象的也其他同步方法執行...所以其他操作可以讀或寫操作。 現在你爲什麼看到一些數據庫相關方法的同步關鍵字? 以及併發操作的數據庫來處理,你靠隔離level.Read Database Isolation

現在讓我們說你的DB隔離級別READ UNCOMMITTED,你必須做的讀取和寫入同一個表的方法,則U一定要同步這些方法。

0

使用​​被鎖定特定的方法/代碼,從而使其他線程必須等待,直到當前線程完成執行同步的代碼塊,意味着在任何給定的實例中,同步的代碼不能由多於一個的線程執行。
僅在應用這提供了保障。