wait notify

本文介绍了Java中的wait(),notify(),notifyAll()API及其与Thread.sleep()之间的区别。重点讲解了如何在synchronized块中正确使用这些方法以实现线程间的通信和同步。
摘要由CSDN通过智能技术生成


在这里插入图片描述


1. API 介绍

都属于 Object 对象的方法。必须获得此对象的锁,才能调用这几个方法,只有重量级锁才能调用wait、notify

  • obj.wait() 让进入 object 监视器的线程到 waitSet 等待
  • obj.notify() 在 object 上正在 waitSet 等待的线程中挑一个唤醒
  • obj.notifyAll() 让 object 上正在 waitSet 等待的线程全部唤醒

2. 怎么使用wait、notify

2.1 sleep 和 wait 的区别

  1. sleep 是 Thread 方法,而 wait 是 Object 的方法
  2. sleep 不需要强制和 synchronized 配合使用,但 wait 需要和synchronized一起用
  3. sleep 在睡眠的同时,不会释放对象锁的,但 wait 在等待的时候会释放对象锁
  1. 状态都为 TIMED_WAITING

2.2 sleep 和 wait 的使用模板

使用while即使notify all都唤醒了,但是自己这个线程条件还不满足时再次进入while,再次wait。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值