Synchronized是用來保證同一時刻本段代碼不會同時運行。在操作系統(tǒng)中這些代碼被認為是臨界段,如訪問打印機,磁盤,信號量等,只可能有一段代碼在使用這些臨界資源。其他必須等待。這類問題在多cpu多線程的時候尤為要注意。
Synchronized method(){}是用來保證同一時刻某方法不會被多個線程同時執(zhí)行,以免沖突.
Synchronized (object){}是用來保證在執(zhí)行大括號中代碼時,獨占object這個對象,所以,
如果當執(zhí)行到這里時,如果object正被其他同步方法調(diào)用,則必須等候object被解鎖,才能進入該程序塊,而當進入該程序塊時,將對object上鎖,執(zhí)行完以后解鎖,以免在此期間,其他程序用到object.
當某個方法被同步化,則內(nèi)部的屬性也被同步化。獲得monitor的進程獨占這些資源直到解鎖。這樣做保證某些變量被各個線程共享,并且變化是一致的