Java 并发 线程间通信 等待/通知的经典范式
来源:互联网 发布:json字符串格式化输出 编辑:程序博客网 时间:2024/05/29 03:18
实例代码:
import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.TimeUnit;public class WaitNotify { static boolean flag=true; static Object lock=new Object(); public static void main(String[] args) throws Exception{ Thread waitThread=new Thread(new Wait(),"WaitThread"); waitThread.start(); TimeUnit.SECONDS.sleep(1); Thread notifyThread=new Thread(new Notify(),"notifyThread"); notifyThread.start(); } static class Wait implements Runnable{ @Override public void run() { synchronized(lock){ //当条件不满足时候,等待wait,释放锁 while(flag){ try { System.out.println(Thread.currentThread()+"flag is true.wait@"+ new SimpleDateFormat("HH:mm:ss").format(new Date())); lock.wait(); } catch (Exception e) { e.printStackTrace(); } } //符合条件,完成工作 System.out.println(Thread.currentThread()+"flag is true.running@"+ new SimpleDateFormat("HH:mm:ss").format(new Date())); } } } static class Notify implements Runnable{ @Override public void run() { synchronized(lock){ System.out.println(Thread.currentThread()+"flag is true.Notify@"+ new SimpleDateFormat("HH:mm:ss").format(new Date())); lock.notifyAll(); flag=false; } synchronized(lock){ System.out.println(Thread.currentThread()+"flag is true.sleep@"+ new SimpleDateFormat("HH:mm:ss").format(new Date())); } } }}
等待/通知的经典范式:
等待范式:
synchronized(对象){
while(条件不满足){ 对象.wait(); }对应的处理逻辑
}
通知范式:
synchronized(对象){
改变条件对象.notifyALL();
}
阅读全文
0 0
- Java 并发 线程间通信 等待/通知的经典范式
- java线程之间的通信(等待/通知机制)
- Java线程之间的通信-等待/通知机制
- java线程之间的通信(等待/通知机制)
- java线程之间的通信(等待/通知机制)
- java线程之间的通信(等待/通知机制)
- java多线程之线程间通信:等待/通知机制
- Java多线程之线程间通信--等待(wait)/通知(notify)机制,等待/通知之交叉备份实例
- 【Java并发编程】之十一:线程间通信中notify通知的遗漏(含代码)
- 【Java并发编程】之十一:线程间通信中notify通知的遗漏(含代码)
- 【Java并发编程】之十一:线程间通信中notify通知的遗漏(含代码)
- 【Java并发编程】:线程间通信中notify通知的遗漏(含代码)
- 【Java并发编程】:线程间通信中notifyAll造成的早期通知问题(含代码)
- 【Java并发编程】之十一:线程间通信中notify通知的遗漏(含代码)
- java并发编程(十四)--线程间通信中notify通知的遗漏
- java并发编程(十五)--线程间通信中notifyAll造成的早期通知问题
- 【Java并发编程】之十一:线程间通信中notify通知的遗漏(含代码)
- Java并发编程之十四:线程间通信中notify通知的遗漏(含代码)
- 第一个博客
- vuejs点击class变化
- Ubuntu/Linux Server 服务器系统安装
- C#中使用OpenGL:(二)C#调用C/C++的dll
- 06-GoMicro安装
- Java 并发 线程间通信 等待/通知的经典范式
- LCD6210字符型液晶显示器 (1)
- 06-Wifi通讯流程总结及源码下载地址
- [Leetcode] 65, 12, 49
- js:事件冒泡和时间捕获详解
- python3与python2的区别
- Java多线程死锁情况模拟
- 关于powerbi拖动多表关系,出现的关键字重复问题
- 内存对齐,关于__align(n)的解析