对象锁(实例锁,synchronized
)
该锁针对的是该实例对象(当前对象)。synchronized
是对类的当前实例(当前对象)进行加锁,防止其他线程同时访问该类的该实例的所有synchronized块。
每个对象都有一个锁,且是唯一的。
注意:
1.指的是“类的当前实例”, 类的两个不同实例就没有这种约束了。
2.锁住的只是synchronized块,static synchronized块锁不住,而不加锁的方法更加锁不住。
类锁(又称全局锁,static synchronized
)
该锁针对的是类,无论实例出多少个对象,那么线程依然共享该锁。static synchronized
是限制多线程中该类的所有实例同时访问该类所对应的代码块。
注意:
1.static synchronized并不是关键字,只是代表给静态方法加锁。
2.锁住的只是static synchronized块,synchronized块锁不住,而不加锁的方法更加锁不住