// 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 中)?”。
最佳答案
如果来自多个传感器的信息来自一个线程,您只需将它们全部求和并除以接收到的样本数。
另一方面,如果来自许多传感器的信息来自多个线程,那么您将必须使用:
- 线程同步(在加法过程中使用锁来保护总和);
或
- 原子操作(无需锁定,因为结果始终是最新且有效的);
或
- 对每个线程进行求和,然后对所有求和进行求和。
我不是 Java 程序员,所以我无法告诉 Java 中这是如何完成的,但至少你知道它背后的总体思路。
关于java - 当有多个温度产生器时计算平均温度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9646174/