[OCPJP]AtomicInteger的用法

Given the code fragments:

and

Which statement is true?

A. The program prints 1 2 3 and the order is unpredictable.
B. The program prints 1 2 3.
C. The program prints 1 1 1.
D. A compilation error occurs.

題解

AtomicInteger的incrementAndGet方法,可以使AtomicInteger所表示的整數值加一後,同時回傳整數結果,在操作AtomicInteger物件的數值時,同一時間永遠只有一個執行緒可以存取,所以可以達成thread-safe。

程式第8行的x區域變數,在每個執行緒中的數值都不一樣,排序後為1、2、3。但是執行緒執行第9行的順序不同,因此輸出結果會是1、2、3的任意排列組合。

關於作者

Magic Len

各位好,我是Magic Len,是這網站的管理員。我是台灣台中大肚山上人,畢業於台中高工資訊科和台灣科技大學資訊工程系,曾在桃機航警局服役。我熱愛自然也熱愛科學,喜歡和別人分享自己的知識與經驗。如果你有興趣認識我,可以加我的Facebook,並且請註明是從MagicLen來的。

相關文章