当前位置: 首页 > wzjs >正文

宁波h5模板建站wordpress wdone

宁波h5模板建站,wordpress wdone,网站建设与网页设计开题报告,株洲网站开发公司电话在 Java 并发编程中,锁的等待和唤醒机制至关重要,通常使用 wait()、notify() 和 notifyAll() 来实现线程间的协调。本文将详细介绍这些方法的用法,并通过示例代码加以说明。 1. wait()、notify() 与 notifyAll() 在 Java 中,Obj…

在 Java 并发编程中,锁的等待和唤醒机制至关重要,通常使用 wait()notify()notifyAll() 来实现线程间的协调。本文将详细介绍这些方法的用法,并通过示例代码加以说明。

1. wait()notify()notifyAll()

在 Java 中,Object 类提供了 wait()notify()notifyAll() 方法,它们用于线程间的通信。

  • wait():使当前线程进入等待状态,并释放锁。
  • notify():唤醒单个等待线程。
  • notifyAll():唤醒所有等待线程。

注意,这些方法必须在同步代码块(synchronized)中调用,否则会抛出 IllegalMonitorStateException

2. 示例代码

下面的示例展示了 wait()notify() 的使用。

class SharedResource {private boolean available = false;public synchronized void produce() {while (available) {try {wait();} catch (InterruptedException e) {Thread.currentThread().interrupt();}}System.out.println("Producing an item");available = true;notify();}public synchronized void consume() {while (!available) {try {wait();} catch (InterruptedException e) {Thread.currentThread().interrupt();}}System.out.println("Consuming an item");available = false;notify();}
}public class WaitNotifyExample {public static void main(String[] args) {SharedResource resource = new SharedResource();Thread producer = new Thread(resource::produce);Thread consumer = new Thread(resource::consume);producer.start();consumer.start();}
}

3. wait()notify() 的工作原理

  1. 生产者线程 produce()availabletrue 时调用 wait() 进入等待状态,释放锁。
  2. 消费者线程 consume()availablefalse 时调用 wait() 进入等待状态,释放锁。
  3. produce() 生产后调用 notify() 唤醒 consume()
  4. consume() 消费后调用 notify() 唤醒 produce()

4. notifyAll() 的使用场景

notify() 仅唤醒一个线程,而 notifyAll() 可用于有多个等待线程的情况,以防止某些线程被永久阻塞。

public synchronized void produce() {while (available) {try {wait();} catch (InterruptedException e) {Thread.currentThread().interrupt();}}System.out.println("Producing an item");available = true;notifyAll();
}

5. LockCondition 方式

除了 synchronized,还可以使用 LockCondition 进行等待和唤醒控制。

import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;class SharedResourceWithLock {private boolean available = false;private final Lock lock = new ReentrantLock();private final Condition condition = lock.newCondition();public void produce() {lock.lock();try {while (available) {condition.await();}System.out.println("Producing an item");available = true;condition.signal();} catch (InterruptedException e) {Thread.currentThread().interrupt();} finally {lock.unlock();}}public void consume() {lock.lock();try {while (!available) {condition.await();}System.out.println("Consuming an item");available = false;condition.signal();} catch (InterruptedException e) {Thread.currentThread().interrupt();} finally {lock.unlock();}}
}

6. 总结

  • wait()notify() 需要在 synchronized 块中使用。
  • notifyAll() 可防止线程被永久阻塞。
  • LockCondition 提供更灵活的等待和唤醒机制。

合理使用这些机制可以提升 Java 多线程程序的性能和可靠性。


文章转载自:

http://8XzW94UV.qgghr.cn
http://bxz0eX6y.qgghr.cn
http://61soLu6b.qgghr.cn
http://ahZ4b79k.qgghr.cn
http://uDVrzp4r.qgghr.cn
http://YLmLFaH9.qgghr.cn
http://9WXgm8qu.qgghr.cn
http://v0gCqZwT.qgghr.cn
http://Ke3vbtIa.qgghr.cn
http://pkZRfL0j.qgghr.cn
http://IN3bMqLC.qgghr.cn
http://UBC2URU8.qgghr.cn
http://jqOKKkj9.qgghr.cn
http://Is5H5ah0.qgghr.cn
http://z9PKLvqt.qgghr.cn
http://lBPa6JmJ.qgghr.cn
http://dujowi9W.qgghr.cn
http://kKRcic2q.qgghr.cn
http://i3f7Vp1C.qgghr.cn
http://PSpmZCBA.qgghr.cn
http://Q5TDEKm5.qgghr.cn
http://2ciMvTUf.qgghr.cn
http://ByeiaJeE.qgghr.cn
http://qnxEopz6.qgghr.cn
http://sloOnoMt.qgghr.cn
http://iVwuXbLV.qgghr.cn
http://MLb9rrGB.qgghr.cn
http://2rBtWwvR.qgghr.cn
http://e8yys4w0.qgghr.cn
http://kiuP3QKZ.qgghr.cn
http://www.dtcms.com/wzjs/718746.html

相关文章:

  • 网站在政务新媒体建设方案pageadmin好用吗
  • 网站开发技术 包括新站网站如何做Seo
  • 做创意ppt网站有哪些方面企业咨询管理培训公司
  • 中信建设有限责任公司内部网站服务器创建网站
  • 网站建设刂搜金手指下拉二五广告发布平台app
  • 网站模版可以套用吗服务器租用哪家好而且便宜
  • 网站地图怎么做_wordpress调用制定id
  • 怎样做微商网站基本网站建设
  • 网站建设有哪几种创新设计方案
  • 东海县网站建设永久免费自动建站系统
  • 网站建设改版方案考研培训机构排名前十
  • 商城网站建设net2006百度推广代理商加盟
  • 如何做微网站平台毕业设计做网站做不出
  • 丽水网站开发公司装饰公司排名
  • 网站流量突然增加如何制作网站的横幅
  • 顺德电子商务网站建设wordpress 很差
  • 制作音乐网站实验报告西宁做网站ci君博却上
  • 公众号申请网站网站建设运维标准
  • 南通网站设计公司海口会计报名网站
  • 营销型网站用什么模版合适微信开放平台的发展前景
  • 纺织网站制作123纺织网青岛高端网站开发
  • 财务记账网站建设需要摊销吗优化师是干嘛的
  • c语言开发网站上海今天刚刚发生的新闻
  • 网站兼容ie7制冷+网站建设+中企动力
  • 网站网站开发的公司电话赣州吧百度贴吧
  • 网站建设 中国移动网络培训心得体会总结简短
  • 网站如何做微信支付宝支付宝支付接口门户网站cms程序
  • 那个视频网站好企业一号wordpress主题
  • 什么网站可以做头像更新wordpress 504
  • 网站设计与建设考试成立网站建设领导小组的通知