线程间通信 wait()/notify() 用例
来源:互联网 发布:15万suv还是轿车 知乎 编辑:程序博客网 时间:2024/06/05 23:52
考虑一个生产者/消费者模型。
商品类Goods:
class Goods {
private String name;
}
商品容器类GoodsStatck:
class GoodsStatck{
}
生产者类Producer:
class Producer implements Runnable{
}
消费者类Producer:
class Consumer implements Runnable{
}
测试程序:
可能出现以下输出:
Error!The stack is full
Error!There is no goods in stack
即在push的时候会遇到容器GoodsStatck已满,pop的时候遇到容器GoodsStatck为空的情况。
要改变这种情况,必须使用wait()/notify(),即将GoodsStatck的pop()、push() 修改如下:
这样在遇到容器GoodsStatck为空或满的情况时(while循环中),线程将放弃锁(GoodsStatck.this)阻塞,直到满足条件。使用时候注意:
1. 先唤醒其他线程,再放弃自己的锁,即先notify()/notifyAll(),再wait()
2.
3.
可以用 java.util.concurrent包中阻塞队列
- 线程间通信 wait()/notify() 用例
- 线程间通信 wait() notify()
- 线程通信notify(),wait()
- 线程-通信-wait/notify
- wait/notify/notifyAll实现线程间通信
- 使用wait/notify实现线程间通信
- wait 和 notify 实现线程间通信
- 线程间通信——wait notify
- JavaSE 线程通信 wait() notify()
- 线程之间通信 wait notify
- 线程通信---1.wait/notify
- 线程通信之生产者消费者间wait()、notify实现
- wait()与notify()实现线程间的通信
- 多线程并发之线程间的通信,notify,wait
- java 线程间通信简介(wait/notify的应用)
- 线程间的通信——wait()/notify()
- Java用wait() notify()实现线程间通信
- 线程间通信方式(wait和notify的使用)
- Hadoop源码分析36 Child的Reduce分析
- 傅里叶变换
- 数学公式和标点符号的英文读法
- 浅谈PROFINET IO通信的实时性
- Synchnorized 辨析 (1)
- 线程间通信 wait()/notify() 用例
- Hadoop源码分析37 RPC的线程协作
- 跟我一起学makefile
- Android无线网络使用无线键盘、触摸屏操作手机
- CSDN论坛网友写的一篇IOCP文章 -- 理解IOCP
- PROFINET及其同步实时通讯分析
- linux命令strings
- Euler公式
- Anonymous Inner Class(匿名内部类)是否可以extends其他类?是否可以implements interface?