美文网首页
同步监视器锁定的释放问题

同步监视器锁定的释放问题

作者: Fighting365 | 来源:发表于2016-12-05 11:35 被阅读0次

         在任何编程语言中,事关线程安全问题非常重要,而同步监测器是解决java多线程安全问题的关键,关于监测器锁定的释放时机对于程序的运行效率以及多线程的兵法效率至关重要。

任何线程进入同步代码块、同步方法之前,必须先获得对于同步监测器的锁定,那么合适释放对同步监测器的锁定呢?在Java中,程序无法显式的释放对同步监测器的锁定,JVM会从释放机制中自动的释放,下面看看都是在什么情况下会进行同步监测器锁定的释放呢,如下所示:

1. 当前线程的同步方法、同步代码块执行结束,当前线程即释放随同步监测器的锁定;

2. 当前线程的同步方法、同步代码块中遇到break、return终止了该代码块、方法的继续执行,当前线程会释放同步监测器的锁定;

3. 当前线程在同步方法、同步代码块中出现了未处理的error或者exception,导致了该代码块、该方法异常结束时,当前线程会释放同步监测器的锁定;

4. 当前线程执行同步代码块或同步方法时,程序调用了同步监测器的wait()方法,当前线程暂停,则当前线程会释放同步监测器的锁定。

但是在如下情况下,当前线程不会释放对同步监测器的锁定:

1. 线程执行同步代码块或者同步方法时,程序调用了Thread.sleep()、Thread.yield()方法来暂停当前线程繁荣执行,当前线程不会释放对同步监测器的锁定;

2. 线程执行同步代码块时,其他线程调用了该线程的suspend()方法将该线程挂起,也不会释放同步监测器的锁定。

相关文章

  • java同步线程(三)

    **java同步线程(三)** 基本实现方式及同步原理---释放同步监视器的锁定任何线程进入同...

  • Java多线程 -- 04 线程同步

    导读目录 同步代码块 同步方法 释放同步监视器的锁定(仔细看) 同步锁(Lock) Lock和synchroniz...

  • 同步监视器锁定的释放问题

    在任何编程语言中,事关线程安全问题非常重要,而同步监测器是解决java多线程安全问题的关键,关于监测器锁定...

  • Java中的synchronized关键字(三)

    上一篇文章分析了如何获得监视器,本文分析如何释放监视器。 释放监视器 释放监视器主要与ExitEpilog函数和e...

  • synchronized关键字与Monitor对象研究

    1、关于同步方法的总结 同步方法仍然涉及到同步监视器,只是不需要我们显式的声明。 非静态的同步方法,同步监视器是:...

  • Java concurrency <闭锁>

    Java concurrency <闭锁> 重入锁定是类似于死锁和嵌套监视器锁定的情况。 有关锁定和读取/写入锁定...

  • Java基础-多线程(2)

    一.JDK5以后的针对线程的锁定操作和释放操作. 同步的弊端:A:效率低B:容易产生死锁 二.死锁问题的描述 两个...

  • Java并发编程之显式锁

    1.前言 使用Java内置锁的时候,不需要通过Java代码显式地对同步对象的监视器(Monitor)进行抢占和释放...

  • sleep() 和 wait()方法的异同以及notify()和

    一.wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器。notify():一旦执行此方法,就会...

  • 线程的通信

    涉及到的三个方法: wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器。 notify():一...

网友评论

      本文标题:同步监视器锁定的释放问题

      本文链接:https://www.haomeiwen.com/subject/ywpkmttx.html