java中锁的种类和基本原理 如何理解Java锁的可重入性?

[更新]
·
·
分类:互联网
2434 阅读

java中锁的种类和基本原理

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

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

可重入锁 ReentrantLock:支持重复进入的锁,它表示该锁能够支持一个线程对资源的重复加锁。
sychnronized关键字隐式的支持重进入,比如一个sychnronized修饰的递归方法,在方法执行时,执行线程在获取了锁之后仍能连续多次地获取该锁。
ReentrantLock虽然没能像sychnronized关键字一样隐式的重进入,但是在调用lock()方法时,已经获取到锁的线程,能够再次调用lock()方法获取锁而不被阻塞。

synchronized标记的同步是要绑定一个对象的,不写的话实际上实际上就是synchronized(this),即绑定当前对象,这个this对象就是锁(synchronized中可以认为就是监视器),当LoggingWidget执行dosomething的时候获得了这把锁(this),那么他去调用父类(Widget)的dosomthing的时候,父类的dosomething方法也要得到这个锁(this),但是子类的这个方法还没有运行完毕,所以还持有这个锁,父类方法在等,子类不释放锁还拼命的让父类方法执行,却不知道父类方法在眼巴巴的等着这个锁,这样就死锁了······

到底怎么学习Java?

其实还是你的代码量不够。对于刚拿到手的项目,首先你要拿到资料看使用了什么框架,再根据框架来学习。比如你们的项目用到了springboot的,你可以到网上找一下这方面的资料,然后再去看你的项目,这样会简单的多。
java是要多敲多练,多看,多学,给自己制定一份计划,等你学完之后,你会发现其实这都没什么。