为什么在对象类中使用wait(),notify()和notifyAll()方法

 爪哇 中的wait(),notify()和notifyAll()

在这篇文章中,我们将看到为什么 wait(),notify()和notifyAll()方法 在对象类而不在线程类中。

这是最常问的问题之一 爪哇 多线程面试题.

You might know that wait(), notify() And notifyAll() Methods are in Object class and do you know the reason for the same?

让’讨论为什么wait(),notify()和notifyAll()方法在对象类中。

In 爪哇 , 线 waits on 监控 assigned to the object and when you want to send a signal to another 线 who is waiting for the same 监控, you call notify() method to wake one 线 and notifyAll() to wake up all the 线 s.

如果等待,则notify和notifyAll方法在线程类中,则每个 线 应该知道另一个线程的状态。

例如:’s说您有两个线程,T1和T2。现在T1必须知道T2正在等待我刚刚释放的这个特定资源,因为T1将需要调用T2.notify()。

在Java中, 对象本身是共享的 在线程之间并促进 线程间通讯. 线程彼此之间没有特定的知识。它们可以异步运行并且是独立的。他们只是运行,锁定,等待并得到通知。他们不需要了解其他线程的状态。他们只需要在一个对象上调用notify方法,因此将通知正在该资源上等待的线程。

如前所述,

  • When you call wait() method on the object, then it gives up 监控 and go to 睡觉
  • When you call notify() method, then the single 线 which is waiting for the object’的监视器将被通知。

因此,请等待,notify()和notifyAll()在对象上工作’的监视器级别。如果当前持有监视器的线程要放弃监视器,则它将在对象上调用wait方法,如果要通知其他线程,则将在对象上调用notify方法。

Shared objects allow 线 s to communicate by calling wait(), notify() And notifyAll() Methods, so these methods are in the object class.

那’关于为什么wait(),notify()和notifyAll()方法在对象类中而不在线程类中的所有信息。


导入联系人

您可能还喜欢:

相关文章

  • 获取Java中的线程ID
    9月30日

    获取Java中的线程ID

    在本文中,我们将学习获取Java中正在运行的线程的线程ID。 Id是在线程创建时生成的唯一正数。该ID在线程的生存期内保持不变。线程终止时,其ID可用于引用另一个线程,但是[…]

  •  爪哇 中的ArrayBlockingQueue
    9月19日

    爪哇 中的ArrayBlockingQueue

    在本文中,我们将了解Java并发队列BlockingQueue。然后我们将深入其中’其中之一的实现ArrayBlockingQueue。什么是BlockingQueue 阻塞队列接口是在Java 5中并发API下引入的,它表示一个线程安全的队列,可以在其中添加和删除元素。我们可以有 […]

  • 将Java程序延迟几秒钟
    12月11日

    将Java程序延迟几秒钟

    在这篇文章中,我们将看到如何将Java程序延迟几秒钟。在很多情况下,我们需要等待其他任务完成,因此我们需要延迟Java程序。有多种方法可以延迟Java程序的执行。使用Thread.sleep 睡觉 方法会使当前线程暂停[…]

  • 29 May

    如何使用Java中的线程打印偶数和奇数

    在本文中,我们将看到如何使用Java中的线程打印偶数和奇数。另请参见:如何在Java中使用3个线程打印序列问题您将获得两个线程。您需要使用一个线程打印奇数,而使用另一线程打印偶数。您需要以自然顺序打印[…]

  •  爪哇 中的自定义BlockingQueue
    10月16日

    爪哇 中的自定义BlockingQueue实现

    在本文中,我们将看到如何创建自己的自定义BlockingQueue。这是最常被问到的Java面试问题之一。您需要实现自己的BlockingQueue。这个问题有助于面试官对多线程概念有所了解。这是BlockingQueue的简单实现。我们将使用数组将元素存储在[…]

  •  爪哇 中Runnable和Callable之间的区别
    12月16日

    爪哇 中Runnable和Callable之间的区别

    Runnable和Callable接口都在多线程环境中使用。Callable在java.util.concurrent.Callable包中可用,而Runnable在java.lang.Thread中可用。 爪哇 中Runnable和Callable接口之间的区别Runnable在Java 1.0版本中引入,而Callable是Runnable的扩展版本,并在Java 1.5中引入,以解决Runnable的局限性。可运行[…]

Comments

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。