1.
2.ReentrantLock对比synchronized的优势
a.提供了一个tryLock方法加锁,对于lock操作,如果加锁不成功,会阻塞等待(死等),对于tryLock操作,如果加锁不成功,会返回false,可以设定等待时间.
b.使用构造方法设置参数来选择公平锁和非公平锁.
c. 也具有等待通知机制,搭配Condition类完成,功能更强大,可以唤醒指定线程.
3.ReentrantLock对比synchronized的劣势
a.unlock容易遗漏,建议搭配finally来使用.
b.synchronized锁对象是任意对象,ReentrantLock锁对象是锁本身,多个线程针对不同的ReentrantLock调用lock方法不会发生锁竞争.
c.没有自动优化的机制.
4.实际开发中,首选synchronized.