我需要一些幫助理解Java內存model.The下面是一個例子gerneric掌握基本概念:的Java happend,前同步塊
圖片我有一個對象實例調用Shared
和兩個線程A
和B
。此外還有某種Queue
,帶有同步的put
和take
。
螺紋A
修改前的Shared
-instance 和在的put
方法。
問題1:從A
所有變化是顯而易見的,當B
通過同步take
- 方法得到Shared
-object實例?
問題2:只要A
離開同步put
-方法,刷新內存緩存(在Shared
上的所有更改都可見)。如果在put
中調用wait()
-方法A
,會發生什麼情況?即使A
尚未退出-method,B
也會看到對Shared
所做的更改嗎?致電wait()
時,緩存是否也會被刷新?
非常混亂的問題。也許一些代碼樣例。例如,隊列如何更改put方法中的傳遞對象? – vidstige