类同步和对象同步的区别
理解类和对象的区别
------------------------------------------------------------
类可以有一组实例(类对象)
对象只是一个实例(类的实例)
------------------------------------------------------------
类级别的同步,
保证该类所有实例对象,使用临界资源时同步
低效
对象级别的同步,使用临界资源时同步
只是保证本对象内同步
类的不同实例对象间不保证
------------------------------------------------------------
同步实例(类的对象)包含的方法,使用同步非静态方法。方法要私有。
synchronized.....
由此扩展同步非静态变量,非静态块
同步类包含的方法,使用同步静态方法。方法要私有。
static synchronized ....
由此扩展同步静态变量,静态块
------------------------------------------------------------
注意:
特别是模式中的singleton,容易使用对象级别的同步
------------------------------------------------------------
注意:
synchronized (this)
只是一个对象级别的同步
------------------------------------------------------------
技巧:
一个类级别同步的例子
private static String class_sync = "class_sync";
...
synchronized (class_sync)
------------------------------------------------------------