Java SE 102 synchronized关键字常见陷阱深度剖析

Java SE 102 synchronized关键字常见陷阱深度剖析

当同步方法加上static关键字之后,不是锁在当前对象了,如果要锁当前对象,结果应该与不加static是一样的。静态方法不属于任何一个对象,它是属于类本身的。因此可以通过类的名字去调用它。而不是通过对象,一般的实例方法都要通过对象来去调用它。

因此当一个方法是static的,并且这个方法被synchronized关键字所修饰的话,当一个线程去访问这个静态的synchronized这个方法,它锁的就不是当前的对象,而是当前这个对象所对应的那个Class对象。

如果一个类有10个对象,这10个对象所对应的Class对象有几个,只有一个,也就是说不管这个类生成多少个对象,它们所对应的Class对象只有唯一的一个。

类里面定义了两个synchronized的static方法,如果线程执行的时候,肯定是一个先一个后,不会同时,因为它们所对应的Class对象,只有一个。

Java SE 102 synchronized关键字常见陷阱深度剖析

相关推荐
相关主题
热门推荐