synchronized可以修饰类、方法(包括静态方法)、代码块。修饰类和静态方法时,锁的对象是Class对象;修饰普通方法时,锁的是调用该方法的对象;修饰代码块时,锁的是方法块括号里的对象。
简单地说synchronized锁存在对象头中。低层的话是通过AQS实现的。
Lock也是基于AQS实现的,所以详情看AQS实现原理。AQS是juc包的作者为了便于使用者实现锁而构建的一套锁实现框架,AQS是基于模板方法实现的。具体见AQS实现原理。
后续会更进一步完善此内容。
synchronized可以修饰类、方法(包括静态方法)、代码块。修饰类和静态方法时,锁的对象是Class对象;修饰普通方法时,锁的是调用该方法的对象;修饰代码块时,锁的是方法块括号里的对象。
简单地说synchronized锁存在对象头中。低层的话是通过AQS实现的。
Lock也是基于AQS实现的,所以详情看AQS实现原理。AQS是juc包的作者为了便于使用者实现锁而构建的一套锁实现框架,AQS是基于模板方法实现的。具体见AQS实现原理。
后续会更进一步完善此内容。