Java基础 生产者和消费者(等待唤醒机制)

 

 

生产者和消费者完整的执行过程:

 

 

等待唤醒机制:

在Java中,等待唤醒机制是通过Object类的wait()、notify()和notifyAll()方法来实现的。这种机制通常用于多线程之间的协作,允许线程在某个条件满足或者发生变化之前等待,并在条件满足时被唤醒。

1.wait()方法: 当一个线程在某个对象上调用wait()方法时,它会释放对象的锁,然后进入等待状态,直到其他线程调用相同对象上的notify()或notifyAll()方法来唤醒它。


synchronized (someObject) {
// some condition check
while (conditionNotMet) {
someObject.wait(); // Releases the lock and waits
}
// continue execution
}

 

2.notify()方法: 当一个线程在某个对象上调用notify()方法时,它会唤醒在该对象上调用wait()方法而进入等待状态的一个线程。哪个线程被唤醒是不确定的。


synchronized (someObject) {
// perform some operations
someObject.notify(); // Wakes up one waiting thread
}

 

3.notifyAll()方法: 当一个线程在某个对象上调用notifyAll()方法时,它会唤醒在该对象上调用wait()方法而进入等待状态的所有线程。


synchronized (someObject) {
// perform some operations
someObject.notifyAll(); // Wakes up all waiting threads
}


等待唤醒机制通常用于线程之间的协作,例如在生产者-消费者问题中,或者当某个共享资源的状态发生变化时通知其他等待的线程。需要注意的是,这些方法只能在同步块或同步方法中使用,因为它们涉及到锁的操作。

 

posted @   1stzz1  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示