synchronized与ReentrantLock区别与联系

简介: synchronized与ReentrantLock区别与联系

synchronized与ReentrantLock区别与联系

1.有了synchronized为什么会出现ReentrantLock

synchronized也有一定的局限性,例如:

  1. 当线程尝试获取锁的时候,如果获取不到锁会一直阻塞,这个阻塞的过程,用户无法控制

  2. 如果获取锁的线程进入休眠或者阻塞,除非当前线程异常,否则其他线程尝试获取锁必须一直等待

2.三个方面比较

  1. 可重入锁:可重入锁是指同一个线程可以多次获得同一把锁;ReentrantLock和关键字Synchronized都是可重入锁
  2. 可中断锁:可中断锁时子线程在获取锁的过程中,是否可以相应线程中断操作。synchronized是不可中断的,ReentrantLock是可中断的
  3. 公平锁和非公平锁:公平锁是指多个线程尝试获取同一把锁的时候,获取锁的顺序按照线程到达的先后顺序获取,而不是随机插队的方式获取。synchronized是非公平锁,而ReentrantLock是两种都可以实现,不过默认是非公平锁

ReentrantLock常用的方法

  1. isHeldByCurrentThread:实例方法,判断当前线程是否持有ReentrantLock的锁

获取锁的4种方法对比

获取锁的方法 是否立即响应(不会阻塞) 是否响应中断
lock() × ×
lockInterruptibly() ×
tryLock() ×
tryLock(long timeout, TimeUnit unit) ×
目录
相关文章
|
3月前
|
安全 Java 程序员
synchronized关键字与ReentrantLock的区别和应用
synchronized关键字与ReentrantLock的区别和应用
20 0
|
6月前
ReentrantLock和Synchronized简单比较
ReentrantLock和Synchronized简单比较
20 0
|
6月前
|
Java 程序员
在Synchronized和ReentrantLock之间选择
在Synchronized和ReentrantLock之间选择
23 0
|
9月前
|
程序员
ReentrantLock与synchronized的区别
ReentrantLock与synchronized的区别
|
9月前
|
安全 Java
synchronized 锁与 ReentrantLock 锁的区别
synchronized 锁与 ReentrantLock 锁的区别
89 0
|
10月前
|
Java API 调度
synchronized 和 ReentrantLock 的实现原理是什么?它们有什么区别
synchronized 和 ReentrantLock 的实现原理是什么?它们有什么区别
58 0
|
10月前
|
Java 编译器
10.关于synchronized的一切,我都写在这里了
大家好,我是王有志。我们已经完成了synchronized的学习,今天我们利用学习到的知识去回答一些关热点问题。
54 0
|
11月前
|
算法 Java
【JUC基础】05. Synchronized和ReentrantLock
前面两篇中分别讲了Synchronized和ReentrantLock。两种方式都能实现同步锁,且也都能解决多线程的并发问题。那么这两个有什么区别呢? 这个也是一个高频的面经题。
线程同步的方法:Synchronized、Lock、ReentrantLock分析
线程同步的方法:Synchronized、Lock、ReentrantLock分析
synchronized和ReentrantLock的区别
synchronized和ReentrantLock的区别
101 0

热门文章

最新文章