java - 为条件/等待java创建一个静态成员

标签 java concurrency

是否有可能在一个类中创建一个静态成员来响应(如果它的 wait 方法被调用),对于不共享类的相同实例的线程是否正确(它们是否能够相互通知与 notifyAll 使用静态成员字段)?

最佳答案

您可以将单个实例存储在类的静态字段中,任意数量的线程都可以等待。实例存储在哪里并不重要。关键是所有线程都可以访问同一个实例——无论是来自静态字段/方法、单例服务对象还是静态局部变量。

public class MakeMeWait {
    private static Object semaphore = new Object();

    public static void waitPlease() {
        semaphore.wait();
    }

    public static void wakePlease() {
        semaphore.notifyAll();
    }
}

虽然此示例使用内置的 Java waitnotifyAll 方法,但最好还是使用 java.util.concurrent打包而不是滚动您自己的多线程解决方案。

关于java - 为条件/等待java创建一个静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9765244/

相关文章:

java - 延迟对对象的调用而不强制当前线程 hibernate

java - 当容器关闭时 sleep 线程会发生什么?

c# - 如何确保我的 HttpClient 在 C# 中只初始化一次?

c# - 无法安全地锁定 ConcurrentDictionary 的值

java - 检查拼字游戏单词列表中的确切单词

java - List.removeIf() 的谓词行为

java - Android RecyclerView 滚动并将项目置于顶部

java - 使用 http url 连接时未找到文件异常?

java - 同步 : Threads execute two critical sections in same order

java - EntityManagerFactory 应该在应用程序关闭时关闭吗?