0
点赞
收藏
分享

微信扫一扫

synchronized是可重入的,即线程获取自己持有的锁时会请求成功

小磊z 2023-03-24 阅读 110


重入: 某个线程试图获取一个已经由它自己持有的锁,那么这个请求就会成功。“重入”意味着获取锁的操作的粒度是” 线程 ”而不是“调用”。


重入的一种实现方式是为每个锁关联一个计数器和一个所有者线程。




重入避免了以下两种情况发生死锁:


1. 有synchronized修饰的方法递归调用。


2. 子类在重写的方法中调用父类相同的方法:


class FatherC {
	public synchronized void doSomething() {
		
	}
}
 
class childrenC extends FatherC {
	 @Override
	 public synchronized void doSomething() {
		 System.out.println("call father override method");
		 super.doSomething();
	 }
}



举报

相关推荐

0 条评论