静态方法也可以同步。要保护的静态数据只有一份副本,因此要同步静态方法,而且每个类需要一个锁,用于整个类的锁,存在这样的锁------Java中载入的每个类都有一个对应的代表该类的java.lang.class实例。就是这个实例的锁来保护该类的静态方法。同步静态方法不需要做任何特殊操作:- public static synchronized int getCount(){
- return count;
- }
复制代码 当然,也可以通过使用同步块代码替换:- public static int getCount(){
- synchronized(MyClass.class){
- return count;
- }
- }
复制代码 MyClass.class为字面值,用于告诉便衣器找MyClass的类的Class实例
总是记住静态方法与非静态方法同步是两个互不影响的机制即可 |