類同步和對象同步的區別
理解類和對象的區別
------------------------------------------------------------
類可以有一組實例(類對象)
對象只是一個實例(類的實例)
------------------------------------------------------------
類級別的同步,
保證該類所有實例對象,使用臨界資源時同步
低效
對象級別的同步,使用臨界資源時同步
只是保證本對象內同步
類的不同實例對象間不保證
------------------------------------------------------------
同步實例(類的對象)包含的方法,使用同步非靜態方法。方法要私有。
synchronized.....
由此擴展同步非靜態變量,非靜態塊
同步類包含的方法,使用同步靜態方法。方法要私有。
static synchronized ....
由此擴展同步靜態變量,靜態塊
------------------------------------------------------------
注意:
特別是模式中的singleton,容易使用對象級別的同步
------------------------------------------------------------
注意:
synchronized (this)
只是一個對象級別的同步
------------------------------------------------------------
技巧:
一個類級別同步的例子
private static String class_sync = "class_sync";
...
synchronized (class_sync)
------------------------------------------------------------