慕课网 步骤三5-3多线程 课后作业

本文档介绍了一个Java多线程的课后作业,涉及天气类Weather、生成天气数据线程GenerateWeather、读取天气数据线程ReadWeather及测试类WeatherTest。作业目标是确保数据生成后立即读取,避免不同步。目前存在两个问题:程序实际先读取数据而非生成,以及使用随机数据而非真实天气数据。作者期待得到改进方案和引入真实天气数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求分析:
1、设计一个天气类Weather,用于温度和湿度数据的存放和读取。
2、设计一个线程类GenerateWeather,用于生成天气数据,模拟生成100次天气数据,每次生成天气数据需要5秒的时间。
3、设计一个线程类ReadWeather,用于读取天气数据,模拟读取100次天气数据,每次读取数据需要0.1秒的时间。
4、设计一个测试类WeatherTest,模拟生成和读取数据的过程,要求实现生成一次,紧接着进行读取,不能出现不同步的情况。

1.天气类

package com.imooc.weather;

public class Weather {
 private int wd;//温度
 private int sd;//湿度
 boolean flag=false;
  public int getWd() {
  return wd;
 }
 public void setWd(int wd) {
  this.wd = wd;
 }
 public int getSd() {
  return sd;
 }
 public void setSd(int sd) {
  this.sd = sd;
 }
 //生成温度和湿度
 public synchronized void generateWeather() {
  int wd=getWd();
  int sd=getSd();
  int max1=40,min1=-10;//温度设置为-10℃-40℃
  int max2=70,min2=20;//湿度设置为20-70
  if(!flag) {
     try {
    wait();
   } catch (InterruptedException e) {
    e.printStackTrace();
  }
  wd=(int)(Math.random()*(max1-min1)+min1);
  sd=(int)(Math.random()*(max2-min2)+min2);
  setWd(wd);
  setSd(sd);
    try {
   Threa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值