gpt4 book ai didi

c# - 如果我在一个没有等待的线程上调用 notify 会发生什么?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:42:45 24 4
gpt4 key购买 nike

我想要一个位于事件队列顶部的线程并相应地对其使用react。我的想法是让它清除所有元素,一旦它到达队列末尾,就点击 wait() 直到它被 notify() 处理。然而,接下来的问题是,当线程不在等待时 notify() 发生时会发生什么?

P.S.:我一直在 javadoc 中阅读的监控业务是什么?

最佳答案

简短的回答是没有任何反应。

稍微长一点的答案是,如果监视器上没有任何东西在等待,则没有任何东西可以传递给通知,并且通知会被静默丢弃。

monitor您经常听到的只是您正在使用的原始锁定机制的技术术语。 (IIRC 这个术语是由监视器概念的发明者 Tony Hoare 创造的,他在并发方面做了很多开创性的工作。)

这个想法是,线程只有在持有独占锁的情况下才能执行某些代码区域(在 Java 中,它们是同步方法体和同步块(synchronized block))。其他想要进入这些区域的线程必须等待锁可用。 waitnotify 方法提供了一种与监视器结合使用的附加信号机制。

关于c# - 如果我在一个没有等待的线程上调用 notify 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5137413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com