java中wait、notify和notifyAll的概念用法和例子?
来源:互联网 发布:java 命令设计模式 编辑:程序博客网 时间:2024/05/11 22:29
新手不必过认真研究,我只列马克-to-win了一个国外的经典例子, 有兴趣的可研究这三个方法仅在synchronized 方法中才能被调用。 wait()方法告知被调用的线程退出监视器马克-to-win并进入等待状态,直到其他线程进入相同的监视器并调用 notify( ) 方法。
notify( ) 方法通知同一对象上第一个调用 wait( )线程。
notifyAll() 方法通知调用 wait() 的所有线程,具有最高优先级的线程将先运行。
例1.11.1-本章源码
class Box {
private int content = -9999;
private boolean available;
public synchronized int getContent() {
while (available == false) {// no content to get
try {
/*
当执行下面的wait,这个线程将会暂停在这,然后当下列setContent执行notify,然后这个线程将从这继续执行。
*/
wait();
} catch (InterruptedException e) {
}
}
available = false;
/*
以下notify的功能是,如果生产者睡眠短(不是当前的情况),在这种情况下,生产者睡眠更长,时间是1000,setContent的等待将被执行,那么这个通知将被执行,如果客户睡眠时间更短,则下面的notify是无用的,因为没有人等候,但语法上写上它没关系。
*/
notify();
return content;
}
public synchronized void setContent(int i) {
while (available == true) {// no room for another integer
try {
/*。。。。。。。。。。。。。。。。。详情请进:http://www.mark-to-win.com/JavaBeginner/JavaBeginner6_web.html#ConceptExampleOfwaitnotifynotifyAll
notify( ) 方法通知同一对象上第一个调用 wait( )线程。
notifyAll() 方法通知调用 wait() 的所有线程,具有最高优先级的线程将先运行。
例1.11.1-本章源码
class Box {
private int content = -9999;
private boolean available;
public synchronized int getContent() {
while (available == false) {// no content to get
try {
/*
当执行下面的wait,这个线程将会暂停在这,然后当下列setContent执行notify,然后这个线程将从这继续执行。
*/
wait();
} catch (InterruptedException e) {
}
}
available = false;
/*
以下notify的功能是,如果生产者睡眠短(不是当前的情况),在这种情况下,生产者睡眠更长,时间是1000,setContent的等待将被执行,那么这个通知将被执行,如果客户睡眠时间更短,则下面的notify是无用的,因为没有人等候,但语法上写上它没关系。
*/
notify();
return content;
}
public synchronized void setContent(int i) {
while (available == true) {// no room for another integer
try {
/*。。。。。。。。。。。。。。。。。详情请进:http://www.mark-to-win.com/JavaBeginner/JavaBeginner6_web.html#ConceptExampleOfwaitnotifynotifyAll
0 0
- java中wait、notify和notifyAll的概念用法和例子?
- JAVA的wait和notify和notifyall
- java wait()、notify()和notifyAll()
- Java线程中sleep()、wait()和notify()和notifyAll()、suspend和resume()、yield()、join()、interrupt()的用法和区别
- Java线程中sleep()、wait()和notify()和notifyAll()、suspend和resume()、yield()、join()、interrupt()的用法和区别
- Java线程中sleep()、wait()和notify()和notifyAll()、suspend和resume()、yield()、join()、interrupt()的用法和区别
- Java线程中sleep()、wait()和notify()和notifyAll()、suspend和resume()、yield()、join()、interrupt()的用法和区别
- Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别
- Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别
- Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别
- Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别
- Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别
- Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别
- Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别
- wait()和notify()/notifyAll()
- wait()和notify()、notifyAll()
- 如何在 Java 中正确使用 wait, notify 和 notifyAll
- 如何在 Java 中正确使用 wait, notify 和 notifyAll
- bzoj1257: [CQOI2007]余数之和sum
- PHP——include文件
- IDEA上做Maven项目开发并配置TOMCAT(windows版)
- 关于在宿主activity中设置按钮,动态控制viewPager中的字体的大小的设置,在答题项目中遇到,在此做记录,方便日后学习,改进。
- kafka 生产者给消费者发送消息报 class kafka.common.LeaderNotAvailableException
- java中wait、notify和notifyAll的概念用法和例子?
- python利用numpy实现结构体
- Hbase常见问题收集
- 获取Activity的名字和类
- photoSwipe 结合jquery使用
- StringBuffer
- mongodb聚合函数aggregate操作 分组分页查询统计
- Spring3注解(@Scheduled)创建计划任务
- oracle创建数据库