JavaSE:线程 - 静态方法的锁定
1.静态方法的锁定
<1> 当我们对一个静态方法加锁,如:
public synchronized static void xxx() {...}
那么,该方法锁的对象是类对象。 每个类都有唯一的一个类对象。
获取类对象的方式:类名.class
<2> 静态方法与非静态方法,同时使用了synchronized后,他们之间是非互斥关系的。
原因在于:静态方法 - 锁的是类对象
非静态方法 - 锁的是当前方法所属对象
2.注意事项
使用synchronized保证线程同步应当注意:
<1>多个需要同步的线程,在访问同步块时,看到的应该是同一个锁对象引用
<2>在使用同步块时,应当尽量减少同步范围,以提高并发的执行效率