2016 - 2024

感恩一路有你

java各种锁的使用场景 如何理解Java锁的可重入性?

浏览量:3465 时间:2023-04-22 07:31:26 作者:采采

如何理解Java锁的可重入性?

可重入锁ReentrantLock:允许乱词进入到的锁,它来表示该锁也能支持什么一个线程对资源的重复加锁。

sychnronized关键字隐式的支持重直接进入,比如一个sychnronized修饰的递归方法,在方法执行时,执行线程在声望兑换了锁之后仍能连续过地某些该锁。

ReentrantLock虽说没能像sychnronized关键字一样的隐式的重直接进入,可是在调用lock()方法时,也查看到锁的线程,能够立即全局函数lock()方法资源锁而不被阻塞。

synchronized标记的歌词同步是要绑定一个对象的,不写的话事实上实际上那是互斥锁(this),即手机绑定当前对象,这个this对象是锁(synchronized中可以不其实就是监视器),当LoggingWidget不能执行dosomething的时候完成任务了这把锁(this),那就他去全局函数父类(Widget)的dosomthing的时候,父类的dosomething方法也要换取这个锁(this),只不过子类的这个方法还还没有运行完毕,因此还所属这个锁,父类方法在等,子类不能量锁还玩命的让父类方法想执行,却到底父类方法在一脸期待的等下这个锁,那样就避免死锁了······

java后端除了crud还有什么亮点?

基础:数据结构、常用算法、数据库调优、网络

Java:JVM调优、JDK核心类的源码、SSM框架源码、多线程……

分布式:分布式锁、分布式缓存、分布式配置、分布式事务、临时限流、MQ、分库分表、读写分离、ID生成器……

微服务:注册中心、配置中心、网关、被熔断、日志收集、监控预警、灰度发布……

java怎么避免死锁?

1、最好就是在用tryLock(waytimeout,TimeUnit unit)的方法(ReentrantLock、ReentrantReadWriteLock),系统设置已超时时间,已超时也可以解盟能够防止死锁。

2、最好就是可以使用(jdk1.5以上)包的并发类能用手写再控制并发,都很常用的是ConcurrentHashMap、ConcurrentLinkedQueue、AtomicBoolean等等,实际应用效果中极其没有用,很简单方便啊且效率比使用Lock更高。

3、尽量会降低锁的使用粒度,注意千万不能几个功能用同一把锁。

4、注意减少同步的代码块。

百度搜索圈T社区能免费行业视频教程

方法 死锁 ReentrantLock

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。