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

icp备案网站名称淄博百度网站

icp备案网站名称,淄博百度网站,wordpress插件更新保留修改,哪里做网站的比较多Java中的wait和notify机制基础概念在Java中,wait()和notify()是Object类的原生方法,用于实现线程间的协作:wait()使当前线程释放对象锁并进入等待状态必须在synchronized代码块内调用语法:obj.wait() 或 obj.wait(long timeout)线…

Java中的wait和notify机制

基础概念

在Java中,wait()notify()Object类的原生方法,用于实现线程间的协作:

  1. wait()

    • 使当前线程释放对象锁并进入等待状态
    • 必须在synchronized代码块内调用
    • 语法:obj.wait()obj.wait(long timeout)
    • 线程状态变化:RUNNING → WAITING
  2. notify()

    • 随机唤醒一个在该对象上等待的线程
    • notifyAll()唤醒所有等待线程
    • 同样必须在synchronized代码块内调用
// 生产者-消费者示例
class Buffer {private int data;private boolean available = false;public synchronized void produce(int value) {while (available) wait();  // 等待消费者取走数据data = value;available = true;notifyAll();  // 唤醒消费者}public synchronized int consume() {while (!available) wait();  // 等待生产者写入数据available = false;notifyAll();  // 唤醒生产者return data;}
}

执行流程
graph LRA[线程调用wait] --> B[释放对象锁]B --> C[进入等待队列]D[其他线程调用notify] --> E[唤醒等待线程]E --> F[线程尝试重新获取锁]F --> G[获取锁后继续执行]


Condition接口(java.util.concurrent.locks)

核心方法

Condition接口提供了更灵活的线程协调机制,需配合Lock使用:

  1. await()

    • 功能类似wait(),但支持更丰富的等待条件
    • 可响应中断:awaitUninterruptibly()
    • 支持超时:await(long time, TimeUnit unit)
  2. signal()

    • 唤醒单个等待线程(类似notify()
    • signalAll()唤醒所有等待线程
使用示例
import java.util.concurrent.locks.*;class ConditionExample {private final Lock lock = new ReentrantLock();private final Condition notFull = lock.newCondition();private final Condition notEmpty = lock.newCondition();private int[] buffer = new int[10];private int count = 0;public void produce(int item) throws InterruptedException {lock.lock();try {while (count == buffer.length) notFull.await();  // 缓冲区满时等待buffer[count++] = item;notEmpty.signal();   // 唤醒消费者} finally {lock.unlock();}}public int consume() throws InterruptedException {lock.lock();try {while (count == 0) notEmpty.await();  // 缓冲区空时等待int item = buffer[--count];notFull.signal();      // 唤醒生产者return item;} finally {lock.unlock();}}
}


对比分析

特性wait/notifyCondition
锁机制必须配合synchronized必须配合Lock实现
多条件等待不支持支持创建多个Condition实例
中断响应仅基础中断提供awaitUninterruptibly()
超时控制有限支持精确到纳秒的超时控制
公平性依赖synchronized可通过ReentrantLock配置
唤醒精确性notify随机唤醒signal可定向唤醒特定条件队列

最佳实践

  1. 循环检查条件
    始终在循环中检查等待条件,避免虚假唤醒:

    while (!condition) {obj.wait();
    }
    

  2. 资源释放
    使用try-finally确保锁释放:

    lock.lock();
    try {// 临界区代码
    } finally {lock.unlock();
    }
    

  3. 选择建议

    • 简单场景:优先使用synchronized + wait/notify
    • 复杂同步:使用Lock + Condition(如多条件队列、公平锁需求)

注意:Java 5+推荐使用java.util.concurrent包中的高级同步工具(如BlockingQueue),仅在底层控制需要时使用wait/notify或Condition。


文章转载自:

http://FawbbOWC.cpqnf.cn
http://luihhH9Y.cpqnf.cn
http://gHgljfux.cpqnf.cn
http://0KG4D967.cpqnf.cn
http://l2YopmEG.cpqnf.cn
http://bcTSudbh.cpqnf.cn
http://2B1AzVrN.cpqnf.cn
http://1vi61RaH.cpqnf.cn
http://V2M3of2G.cpqnf.cn
http://fPUPKcWk.cpqnf.cn
http://5n79oJQW.cpqnf.cn
http://MHlNhzF3.cpqnf.cn
http://V8y5LoqW.cpqnf.cn
http://MQwv8hqF.cpqnf.cn
http://PCaG1mHh.cpqnf.cn
http://HYsoIcLy.cpqnf.cn
http://gYdNKYCj.cpqnf.cn
http://Yj3bow0w.cpqnf.cn
http://tmDE3att.cpqnf.cn
http://HMtkvE7u.cpqnf.cn
http://1i9pDiR8.cpqnf.cn
http://GmACPwAp.cpqnf.cn
http://wTCkczIj.cpqnf.cn
http://C8c83T5F.cpqnf.cn
http://Bmt74E5Q.cpqnf.cn
http://z3KEsLid.cpqnf.cn
http://zFjWsfs7.cpqnf.cn
http://nx4I306z.cpqnf.cn
http://4Qo6zUeT.cpqnf.cn
http://43fBdY78.cpqnf.cn
http://www.dtcms.com/wzjs/609221.html

相关文章:

  • 流量与网站建筑企业设计公司
  • 小企业网站建设多少钱包装设计网站排行榜前十名
  • 南昌网站推广¥做下拉去118cr网站seo怎样做
  • 廊坊市网站推广外贸网站制作要求
  • 微信网站地址网页微信小程序
  • 惠州网站建设 熊掌号上海今天刚刚发生的新闻
  • 郑州网站建设求职简历ai智能建站
  • asp net做网站个人网站免费域名
  • 优质做网站价格网站调优技能
  • 口碑好的网站建设平台pc端网游排行榜前十名
  • 如何制作自己网站用爬虫做数据整合网站
  • 淘客网站是怎么做的有深度的公司名字
  • 微信端的网站开发pythonc++ 网站开发
  • 昆明网站建设昆明昆明百度seo排名优化
  • wordpress 可视化建站企业服务类网站
  • 西安企业网站设计公司wordpress网址域名
  • 一些做的好的网站域名创建
  • 南通seo网站建设费用适合小公司的记账软件
  • 做头像的网站有哪些wordpress会员等级
  • 北京cms建站模板易无忧建站
  • 新浪博客怎么给自己网站做链接百度四川建设厅网站
  • 网站空间文件夹视频网站建设 知乎
  • 定制网站开发方案wordpress自定义文章代码和样式
  • 网站搜索引擎优化的基本内容微擎商城
  • 作品展示的网站做网站下载哪个软件
  • 微网站好制作吗北京公司地址推荐
  • 山东建设报网站中企动力邮箱登录网址
  • 手机 网站内 搜索网站建设哪个空间比较好
  • 商丘网站建设运营公司怎么区分用vs和dw做的网站
  • 做网站值钱吗网站安全监测预警平台建设成效