wait() 无限制等待下去 wait(1000) 等待1s
b.wait();的意思是临时释放锁,并阻塞当前线程 直到notify 或(notifyAll )
notify()所在的同步块运行完之后,wait所在的线程就可以继续执行.
notify() 和 wait() 需要在 synchronized 之中
package test;
class Ticker extends Thread {
int tickets=50;
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName() + " 线程运行开始!");
Ticker test = new Ticker();
Thread thread1 = new Thread(test);
Thread thread2 = new Thread(test);
thread1.start();
thread2.start();
System.out.println(Thread.currentThread().getName() + " 线程运行结束!");
}
public void run() {
System.out.println(Thread.currentThread().getName() + " 线程运行开始!");
while(tickets>0){
output();
}
System.out.println(Thread.currentThread().getName() + " 线程运行结束!");
}
public synchronized void output(){
//待注销开始 如果注销这段 结果会变化
notify();
try {
wait();
} catch (Exception e) {
e.printStackTrace();
}
//待注销结束
System.out.println(tickets + " " + Thread.currentThread().getName());
tickets--;
}
}
结果如下:
main 线程运行开始!
main 线程运行结束!
Thread-1 线程运行开始!
Thread-2 线程运行开始!
50 Thread-1
49 Thread-2
48 Thread-1
47 Thread-2
46 Thread-1
45 Thread-2
如果把 待注销开始和待注销结束之间的代码注销后可能出现结果如图:
main 线程运行开始!
main 线程运行结束!
Thread-2 线程运行开始!
50 Thread-2
49 Thread-2
Thread-1 线程运行开始!
48 Thread-2
47 Thread-1
解释:1线程运行后到wait 一直到2线程notify后然后wait后 1线程继续运行,
1线程继续运行到notify然后wait 此时通知2线程 运行, 所以没有注销代码的时候会1、2线程交替运行。
这里只有两个线程,所以不用指定对象名后再notify
分享到:
相关推荐
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
java中多线程编程notify、wait的使用
源码—Java多线程5—死锁和wait notify notifyAll
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
开一个子线程来完成一个循环处理的工作,我在主线程中能灵活控制这个子线程的开始、暂停/继续、结束。
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
3(深入理解Wait、Notify和Wait与sleep区别).rar
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
主要介绍了java多线程wait,notify,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面小编和大家一起来学习一下吧
主要介绍了详解Java程序并发的Wait-Notify机制,多线程并发是Java编程中的重要部分,需要的朋友可以参考下
使用Java多线程的wait和notify方法实现最简单的生产者消费者模式
Java多线程同步(wait()notify()notifyAll())[文].pdf
java多线程下wait和notify的作用
Java多线程的样例代码,工程,内含wait()、notify()和sychronized的使用范例。
5. Java多线程学习(四)等待/通知(wait/notify)机制 6. Java多线程学习(五)线程间通信知识点补充 7. Java多线程学习(六)Lock锁的使用 8. Java多线程学习(七)并发编程中一些问题 9. Java多线程学习(八...
java多线程之wait,notify的用法([ 详解+实例 ]).
wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视。本文对这些关键字的使用进行了描述。 在 Java 中可以用 wait、notify 和 notifyAll 来实现...
主要介绍了Java多线程通讯之wait,notify的区别详解,非常不错,具有一定的参考借鉴借鉴价值,需要的朋友可以参考下