Java平台中的任何一个对象都有唯一一个与之关联的锁。这种锁被称为监视器(Monitor)或内部锁(Intrinsic Lock)。
内部锁是一种排他锁,能够保障原子性、可见性和有序性。
内部锁是通过
synchronized
关键字实现的
原理
同步方法
被synchronized
关键字修饰的方法。
// 实例方法
synchronized void aa() {
...
}
// 静态方法
static synchronized void bb() {
...
}
同步代码块
被synchronized
关键字修饰的代码块
synchronized(锁句柄) {
...
}
锁句柄
锁句柄是一个对象的引用(或者能够返回对象的表达式)
内部锁的使用并不会导致锁泄漏
临界区的代码即时抛出异常,也不会阻止内部锁的释放