Java线程notify()方法

标签 java multithreading

考虑有两个线程正在等待执行同步块(synchronized block)。现在有机会有人在等待,在这种情况下我真的需要调用notify()吗?我认为当同步块(synchronized block)执行完成时,其他线程会释放锁吗? notify()方法的具体用途是什么?

线程专家请解释一下?

最佳答案

不,在这种情况下您不需要使用 notify()。你是对的,必须等待获取锁的线程会在锁释放后自动继续执行。

notify() 方法与 wait() 方法结合使用。当一个线程调用 wait() 时,它可能会释放锁并开始等待。结束等待的条件之一是当另一个线程调用 notify() 时。 wait()notify() 都必须在当前线程已同步的实例上调用。

例如,这可用于在两个线程之间创建 channel ,其中一个线程正在使用另一个线程生成的信息。如果消费者没有足够的信息来处理,它可能会wait(),直到生产者执行notify()有更多数据可用。

关于Java线程notify()方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21544140/

相关文章:

c++ - lua_newstate 与 lua_newthread

java - Google App Engine的自定义异常(exception)消息格式-Java

java - 根据 xpath 元素中其他属性的条件获取属性值

java - 关于 Java 指针和更改 JSF 应用程序中的语言环境的基本知识

java - CSV在java中显示日语hankaku(半角)而不是zenkaku(全角)

.net - 基于多线程的应用程序的哪种类型的设计图?

c - 使用管道的 C 多线程聊天程序

java - java 套接字上的 Docker : java.net.ConnectException: Connection refused (Connection refused)

C++:从父类(super class)调用函数模板

java - “Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1;”-使用@Scheduled方法调用删除时