其他差别:
synchronized是隐式的加锁,lock是显式的加锁;
synchronized底层采用的是objectMonitor,lock采用的AQS;
synchronized在进行加锁解锁时,只有一个同步队列和一个等待队列, lock有一个同步队列,可以有多个等待队列;
synchronized使用了object类的wait和notify进行等待和唤醒, lock使用了condition接口进行等待和唤醒(await和signal);
lock支持个性化定制, 使用了模板方法模式,可以自行实现lock方法;
Lock是一个接口,为了使用一个Lock对象,需要用到;
Lock lock = new ReentrantLock();
synchronized和ReentrantLock 区别:
知识来源:
【并发与线程】线程加锁有哪些方式?synchronized和lock的区别?_哔哩哔哩_bilibili
【并发与线程】Sychronized的偏向锁、轻量级锁、重量级锁_哔哩哔哩_bilibili
百度安全验证