synchronized原理
Reentlock原理
二者的对比区别
- synchronized是jvm层面实现的,对开发使用这透明;
而reentlock是jdk并发包下的工具类,提供的是api的访问模式 - reentlock提供线程可中断模式(有超时参数),而synchronized只能等待jvm自己去判断是否中断。
- reentlock需要自己去释放锁 (finally后);而synchronized不用关系
- reentlock提供公平锁和非公平锁的实现,synchronized本身是非公平锁
- reentlock提供condition api工具,同一个lock下可创建多个condition,condition可以很方便的实现分组唤醒线程。
严格的循环打印A,B字符串,就可以用这个去实现。 - 实现原理,synchronized是通过在字节码加对象监视器实现的。
reentlock是依赖基于硬件支持的CAS操作实现的。
相同点:
都是可重入锁
性能是做了优化。相差不多
网友评论