多線程中有主內存和工作內存之分 在JVM中有一個主內存專門負責所有線程共享數據而每個線程都有他自己私有的工作內存 主內存和工作內存分貝在JVM的stack區和heap區
線程的狀態有Ready Running Sleeping Blocked 和 Waiting幾個狀態Ready 表示線程正在等待CPU分配允許運行的時間
線程運行次序並不是按照我們創建他們時的順序來運行的CPU處理線程的順序是不確定的如果需要確定那麼必須手工介入使用setPriority()方法設置優先級
我們無從知道一個線程什麼時候運行兩個或多個線程在訪問同一個資源時需要synchronized
每個線程會注冊自己實際某處存在著對它的引用因此垃圾回收機制對它就束手無策了
Daemon線程區別一般線程之處是主程序一旦結束Daemon線程就會結束
一個對象中的所有synchronized方法都共享一把鎖這把鎖能夠防止多個方法對通用內存同時進行的寫操作synchronized static方法可在一個類范圍內被相互間鎖定起來
對於訪問某個關鍵共享資源的所有方法都必須把它們設為synchronized否則就不能正常工作
假設已知一個方法不會造成沖突最明智的方法是不要使用synchronized能提高些性能
如果一個同步方法修改了一個變量而我們的方法要用到這個變量(可能是只讀)最好將自己的這個方法也設為 synchronized
synchronized不能繼承 父類的方法是synchronized那麼其子類重載方法中就不會繼承同步
[] [] [] []
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27706.html