当有许多温度产生者时,计算平均温度

时间:2012-03-10 11:50:03

标签: java middleware

// AvgTemp.java
public abstract class  AvgTemp {
public void notifyReceived ( String  eventName, Object arg) {
if (eventName.equals("temperatureMeasurement"))  
             { 
                onNewtemperatureMeasurement((TempStruct) arg); 
             } 
}
public abstract void onNewtemperatureMeasurement(TempStruct tempStruct);
}  

// MyAvgTempImpl. java  

public class MyAvgTempImpl  extends AvgTemp {
@Override
public void onNewtemperatureMeasurement(TempStruct tempstruct) {

    //TODO : Need to write a code of  calculating Average Temperature.

    }
}

我的问题是``当来自许多传感器(温度数据的生产者)的通知时,如何编写计算平均温度的代码(在MyAvgTempImpl.java中)?“。

2 个答案:

答案 0 :(得分:1)

如果来自许多传感器的信息来自一个单独的线程,您只需将它们加总,然后除以接收的样本数。

另一方面,如果来自多个传感器的信息来自多个线程,那么您将不得不使用:

  • 线程同步(在添加期间使用锁来保护总和);

  • 原子操作(因为结果始终是最新且有效的,所以不需要锁定);

  • 为每个帖子计算总和,然后计算所有总和的总和。

我不是Java程序员所以我不能告诉你这是如何在Java中完成的,但至少你有一般的想法。

答案 1 :(得分:0)

在你的MyAvgTempImpl类中,添加两个字段:int count,double sum

在onNewtemperatureMeasurement上的方法中:do count ++&总和+ = sensedTemperatureValue;

为您的类MyAvgTempImpl添加另一个方法:

double getAverage() {
 return sum/count;
}