2019Java面试

lock和synchorized的区别
1.synchroized是JVM层面的java内置关键字,lock是一个Java类
2.synchroized无法判断是否获取到锁,但是lock可以
3.synchroized会自动释放锁,lock需要手动释放锁
4.synchroized:如果线程1阻塞,线程2会一直等待 lock:如果线程1阻塞,线程2尝试获取不到锁会直接结束线程
5.synchroized的锁:可重入,不可中断,非公平;lock的锁:可重入,可中断,可公平可不公平。
公平锁:先等待的线程先获得锁

同步代码块和同步方法的区别
同步方法默认使用this或者当前类作为锁,同步代码块可自己设定锁(synchroized(this){})

ReenTrantLock可重入锁和Synchronized的区别和联系
区别:Synchroized是基于JVM实现的,ReenTrantLock是基于JDK实现的,说白了就类似于操作系统来控制实现和用户自己敲代码实现的区别。前者的实现是比较难见到的,后者有直接的源码可供阅读。

可重入锁
可重入锁,也叫做递归锁,指的是在同一线程内,外层函数获得锁之后,内层递归函数仍然可以获取到该锁。换一种说法:同一个线程再次进入同步代码时,可以使用自己已获取到的锁。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值