假設我有下面的代碼段多線程與線程佔先同步
public synchronized void method()
{
if(something == null)
{
something = new SomeThing();
}
//do something
}
現在,在多線程環境中假設,一個線程[線程1]進入方法,它執行後只是搶佔new Something();
但然後才能將其分配給something
。然後另一個線程[線程2]也嘗試調用該方法。現在究竟發生了什麼?線程1獲得的鎖定會發生什麼?線程1的步驟是否會回滾?
同步不是一個事務,沒有辦法滾回來。如果在該塊中刪除了文件或發送了UDP數據報,您將如何回滾? – 2011-02-12 06:42:05