我知道關鍵字使方法一次只能在單個類上運行。但這是問題。如何讓所有的類方法只在單線程上運行? (同步課?)
我有一個數據庫類的方法,例如insertAccount
,updateSetting
等。如果我使insertAccount
,updateSetting
同步,它們中的每個將一次只能在一個線程上運行。
如果有一種方法用於整個數據庫,它會很好,但沒有一個。如果一個線程調用insertAccount
,另一個線程調用updateSetting
在同一時間,它會變壞,對吧?
因爲只有其中一種方法可以隨時運行。那麼我該怎麼做?
有沒有辦法將類似的東西應用於全班?因此,如果第一個線程同時調用insertAccount
和第二個線程調用updateSetting
,則第二個線程必須等到第一個線程完成訪問數據庫。
您應該使用鎖定機制,例如信號量 –
您應該依賴(正確使用)具有適當事務隔離級別的數據庫事務,如果您擁有多個承載(Web)應用程序的節點,它甚至可以工作(假設他們使用相同的數據庫)。 –
看看:https://stackoverflow.com/questions/442564/avoid-synchronizedthis-in-java?rq=1 –