当前位置: 首页 > 网络应用技术

Java对象监视器和条件监视器概念和比较

时间:2023-03-08 02:26:43 网络应用技术

  本文详细介绍了Java对象监视器和API方法的概念,包括JDK1.5提供的条件监视器的比较。

  对象监视实际上是与每个对象关联的监视器对象,也称为管道锁。会议同步部分中的细节。本文主要为Java初学者介绍相关的API方法,以准备后来的线程通信。

  当多个线程持有的“对象监视器”是同一对象时,只有一个线程可以同时以同步代码块中的同步代码块执行代码!这可以是线程同步!

  关于对象监视器:Java同步的基础实现和锁定升级优化的原则[10,000个字]

  为了促进线程的通信,Java提供Wait(),NotifyAll和Notify()实现线程,并唤醒另一个等待线程的三个监视器方法(通知和等待)。

  等待方法,通知方法,通知方法,当使用时,必须具有自己的同步监视器(锁定对象)。自己的锁定对象),否则会引发例外:illegalmonitorsstateException-如果当前线程不是此对象监视器的所有者。

  因此,创建一个锁定对象,并且该锁定对象具有一组监视方法。

  为什么在对象类中定义上述方法?

  使用时,您必须在使用时,必须通过您自己的锁定对象调用nofityall监视器方法。锁定对象是任何对象。只要对象具有监视器的对象,就应将任何对象的方法拉出。它在对象类中定义。毕竟,对象是所有类型的超级类!

  任何Java对象都有与之关联的唯一监视对象。为此,Java为每个对象(在Java.lang.Object上定义)提供了一组监视方法,主要包括Wait(),Wait和Wait和Wait(长时间),notify(notify()和notifyall()方法。这些方法与同步的同步关键字结合使用,以实现等待/通知模式。

  JDK1.5的条件接口还提供了类似于对象的监视方法。它可以用来用锁实现等待/通知模式,但是两者的方法和功能特性仍然存在差异。

  对象的监视方法和条件接口的比较如下:下面:

  条件可以与任何锁定对象结合在一起,并且监视方法将不再绑定到锁定对象。使用锁锁后,它等同于使用同步方法和语句,并且条件取代了使用对象监视方法。

  在条件下,监视方法被封装在条件对象中,而wait()被eagait()替换为signal()替换为notify(),并且可以用SignalAll()替换传统线程的通信方法。请注意,条件注定要锁定。要创建锁定条件,您必须使用newCondition()方法。

  条件的强度是它可以为多个线程创建不同的条件。使用同步/wait()只有一个阻止队列。NotifyAll将唤起阻塞队列下方的所有线程,使用锁定/条件可以实现多个障碍物。

  void等待()抛出InterruptedException当前线程进入等待状态,直到通知(信号)或中断,当前线程进入运行状态并从等待()方法返回,包括1。signall()到条件()living signall()()()()()active inmigall()()living signall()()()living signall()()()living signall()living signall()()living信号())()living signall()()()()active signall()()()living signall()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())()()()active signall()()live()live()live()living()living()living()living()living()living()living()active signall(。)方法和选择当前线程以唤醒2。其他线程(呼叫Interrupt()方法)中断当前线程void eevunin Dredrestion()当前线程进入等待状态,直到通知它为止。在等待过程中,它不会响应中断投掷国际的中断当前线程进入等待状态,直到被通知,中断或超时为止。返回值表示剩余时间。如果在NanostimeOut为纳米秒之前唤醒,则返回值为(nanostimeout-Actual-Actual Time消耗)。注释,中断或到一定时间。如果在指定的时间内通知它,则方法返回真实,否则,当它到达时,当它到达时,当它到达时。到指定的时间,该方法返回falseVoid Signal()以唤醒条件上等待的线程。从等待方法返回的线程必须使与锁相关的锁相关联:

  获取条件方法必须通过锁定的newCondition()方法。

  条件定义了两种类型的等待/通知。当当前线程调用这些方法时,您需要提前获得与条件对象关联的锁。条件对象是由锁定对象创建的(调用锁定对象的newCondition()方法)。换句话说,条件取决于锁定对象。

  如果您不理解或不需要交流,可以留言。此外,我希望收集和注意,我将继续更新Java的各种教程!