8.17ReentrantLock(可重入锁)

1.

8.17ReentrantLock(可重入锁)_第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.

你可能感兴趣的:(java,开发语言)