Java 多线程模拟天气数据读取
来源:互联网 发布:淘宝 店铺 推广 编辑:程序博客网 时间:2024/06/05 17:03
Javapublic class Weather { private int temperature;// 温度 private int humidity;// 湿度 boolean flag = false;// 判断生成还是读取 public int getTemperature() { return temperature; } public void setTemperature(int temperature) { this.temperature = temperature; } public int getHumidity() { return humidity; } public void setHumidity(int humidity) { this.humidity = humidity; } public synchronized void generate() { // 生成随机数并生成天气数据 if (flag) { //如果已经生成了数据就等待 try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } this.setTemperature((int) (Math.random() * 100)); this.setHumidity((int) (Math.random() * 40)); System.out.println("生成天气数据[温度:" + this.getTemperature() + ",湿度" + this.getHumidity() + "]"); flag = true;//表示已经生成了数据 notifyAll();// 唤醒进程 } public synchronized void read() { // 读取天气信息 if (!flag) { //如果没有任何数据则等待 try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("读取天气数据[温度:" + this.getTemperature() + ",湿度" + this.getHumidity() + "]"); flag = false;//表示用掉了数据 notifyAll(); }}
Javapublic class GenerateWeather implements Runnable { // 生成数据的线程类 Weather weather; GenerateWeather(Weather weather) { this.weather = weather; } @Override public void run() { while (true) { weather.generate();// 调用生成方法 try { Thread.sleep(5000);// 睡眠5秒 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}
Javapublic class ReadWeather implements Runnable{ //读取数据线程类 Weather weather; ReadWeather(Weather weather){ this.weather = weather; } @Override public void run() { while(true){ weather.read();//调用读取方法 try { Thread.sleep(100);//睡眠0.1秒 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}
Javapublic class WeatherTest { public static void main(String[] args) { Weather weather = new Weather(); new Thread(new GenerateWeather(weather)).start(); new Thread(new ReadWeather(weather)).start(); }}
阅读全文
0 0
- Java 多线程模拟天气数据读取
- java 多线程读取数据注意伪共享
- php读取百度天气API Json数据
- 使用SmartWeatherAPI多线程并发获取天气数据
- JAVA模拟多线程
- Java 模拟多线程死锁
- java多线程模拟售票
- 多线程模拟数据采集、显示
- 城市天气查询(Java网络、面向对象、多线程、IO)
- java多线程之模拟死锁
- java多线程 模拟死锁程序
- Java多线程编程,模拟售票
- java 多线程模拟售票系统
- java多线程模拟抢票
- java多线程实例-模拟购票
- Java代码模拟死锁 多线程
- java多线程模拟聊天问题
- JAVA多线程模拟停车场停车
- 二叉树学呀学呀学
- python学习
- learning Opencv ------ 金字塔
- django允许跨域请求配置
- ESP8266学习笔记5:ESP8266接入yeelink
- Java 多线程模拟天气数据读取
- javascript高级程序设计里,介绍了有关defer和async的区别
- 离散题目14
- Visio 2007 画大括号
- Python获取当前路径下的配置文件
- 2017.5.21测试 题一 楼层
- 2017.5.24-准备工作啦
- 条款 20
- 关于JAVA内部类