int B = 0
和isReady=true
不會在編譯時改變順序。注意這裏是機器級代碼的重排序。JDK基於具體系統來作的,如內核線程、用戶線程、用戶線程加輕量進程混合等。java
初始化後就不會改變數組
如Vector這樣的容器,雖然get()、size()、add()等有synchronized關鍵字,可是實際使用時仍是須要額外的同步(能夠是針對容器對象自己的synchronized)保障。
緣由是,Vector的線程安全,指的是其對應方法不可打斷。可是在多線程環境下,多個方法按順序執行時,仍有可能產生非預期的行爲。
舉例:對於非空Vector,記爲v,多個線程同時執行remove(v.size()-1)
,有可能發生數組越界。安全
(實際是第11章的內容)
運行期優化,判斷一個對象是否會逃逸到方法外或其餘線程。若是不會逃逸,對應的優化手段:多線程