如何通过一个例子来描述线程wait和notify
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这期内容当中小编将会给大家带来有关如何通过一个例子来描述线程wait和notify,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。场景:一个类中,一个是往容器中添加元
千家信息网最后更新 2026年11月03日如何通过一个例子来描述线程wait和notify
这期内容当中小编将会给大家带来有关如何通过一个例子来描述线程wait和notify,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
场景:一个类中,一个是往容器中添加元素的方法,一个是返回容器大小的方法,现在又两个线程,A线程调用添加方法,B线程调用返回容器大小方法,当大小为5的时候,B线程提示并结束。
代码可直接复制,运行:
public class UseWaitAndNotify { volatile List list = new ArrayList();//这里为什么使用volatile,请看:https://my.oschina.net/u/4049911/blog/3121294 public void add(Object o) { list.add(o); } public int size() { return list.size(); } public void useWaitAndNotify() { new Thread(new Runnable() { @Override public void run() { synchronized (this) { System.out.println("size方法开始"); /** * 这里必须得是不等于5,因为刚开始肯定不等于5,然后才会进这个方法,执行wait方法,这个线程就会在wait那等着。 * 然后cpu执行另一个方法,当另一个方法执行等于5是,使用notify唤醒等待的线程(等待同一个锁的线程)。 * 然后从wait方法开始往下执行,到结束。 */ if(list.size()!=5) { try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("size方法结束"); } } }).start(); synchronized (this) { System.out.println("add方法开始"); for(int i=0;i<10;i++) { /** *当加入元素==5时,当前线程就应该停止,让出cpu,让cpu去执行其他线程。 *那让线程让出cpu的方法有哪些呢: *wait让出线程,释放锁 *yield 让出cpu,但不会释放锁 *join 插入其他线程,线程同步作用,在被调用线程未结束前,当前线程将一直阻塞在join处 * *我们使用wait * */ list.add(new Object()); if(i==4) { /** * 这里为什么使用notify后,又使用wait呢,就是上面这个方法的意思,使用notify,当前线程是不会释放锁的,所以即使唤醒了其他 * 线程,其他线程拿不到锁,也执行不了。 * 也就是说如果下面不使用wait,当list等于5的时候,另一个线程拿不到锁,执行不了,只有当前线程释放锁,另一个线程才会拿到锁执行, * 也就是说当list的size等于10的时候,另一个线程才会停止 */ this.notify(); try { this.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("add方法结束"); } } } @Test public void test() { //使用wait和notify实现 useWaitAndNotify(); } }因为wait和notify只能在锁中使用,所以需要加上synchronized锁
上述就是小编为大家分享的如何通过一个例子来描述线程wait和notify了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
线程
方法
大小
容器
时候
例子
也就是
也就是说
元素
内容
就是
分析
专业
两个
中小
代码
作用
内容丰富
只有
场景
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
什么是科技互联网
互联网科技公司起名
江苏根荣互联网科技
为想互联网科技怎么样
互联网科技保险
互联网 科技创新
互联网科技公司电话
壹账通互联网科技
撒么互联网科技公司
互联网科技英文翻译
常德市电业局互联网科技部
武汉健翔互联网络科技有限公司
赶超互联网科技 微信多开
锡山区互联网智能科技产品供应
35岁以上互联网科技行业
全球科技与互联网公司市值变化
互联网科技企业商标注意事项
互联网科技机房
北京军民互联网科技公司
互联网 科技节活动 微视频大赛
广州为想互联网科技有限公司
河南云网互联网络科技有限公司
朗涯互联网科技
上海喔噻互联网科技
联恩商钥互联网科技有限公司
成都互联网科技公司100强
互联网科技项目计划书材料类
湖南一路畅行互联网科技
互联网科技大赛获奖感言
科技互联网海报