知识大全 JAVA多线程中的锁机制
Posted 知
篇首语:我永远要记得我所想要的。而不是我所恐惧的。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JAVA多线程中的锁机制相关的知识,希望对你有一定的参考价值。
JAVA多线程中的锁机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
JAVA中的每个对象都可以用作一个实现同步的锁 这种称为内置锁 内置锁是可重入的 因此如果某个线程试图获取一个已经由它自己持有的锁 那么这个请求就会成功
重入的实现方法是 为每个锁关联一个获取计数值和一个所有者线程 当计数值为 这个锁就是开放的 当线程请求该锁时 JVM将记下锁的持有者 并且将计数值+ 如果同一个线程再次回去该锁 计数值继续+ 通过计数值可以看出重入的次数 计数值为 则表示锁已经释放
看一个重入锁的实例
class Father
public synchronized void doSth()
System out println( Father is doSth );
class Child extends Father
public synchronized void doSth()
System out println( Child is doSth );
super doSth();
class Father
public synchronized void doSth()
System out println( Father is doSth );
class Child extends Father
public synchronized void doSth()
System out println( Child is doSth );
super doSth();
以上一段代码 在执行Child类的super doSth()方法时 并不会发生死锁现象 这两个类中的方法都是synchronized同步的 因此执行前都会获取Father的锁 正因为是可重入的 才可以多次获取该锁 不然 第二次获取该锁时必然发生死锁现象
cha138/Article/program/Java/gj/201311/27461相关参考