2014年11月19日 星期三

執行緒的Synchronized鎖定

Java SE7中,有個Synchronized同步鎖定的東西...
當你同時建立起三個物件,然後分別都放進了執行緒,使這個程式建立起3個Thread, 當三個執行緒同時運作的情況下,該物件中的值會分別被改變,因此執行後得到的值會越來越奇怪,像是:

帳號BBCCN 總共有 10000 日圓
執行緒一: 提取3000,BBCCN 剩下7000日圓
執行緒二: 提取5000,BBCCN 剩下5000日圓
執行緒三: 提取2000,BBCCN 剩下8000日圓

這樣的結果非常奇怪,BBCCN被提取最少的人提過之後,錢就變多了,那是因為物件分別被建立後,不同執行緒執行。

但要是在提款的方法的存取修飾字後加入 synchronized 關鍵字,就能避免被執行緒分別存取,才會得到正常的結果。

沒有留言:

張貼留言

© ERIC RILEY , 自由無須告知轉貼
Background Japanese Sayagata by Olga Libby