java - 当有多个温度产生器时计算平均温度

标签 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 中)?”。

最佳答案

如果来自多个传感器的信息来自一个线程,您只需将它们全部求和并除以接收到的样本数。

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

  • 线程同步(在加法过程中使用锁来保护总和);

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

  • 对每个线程进行求和,然后对所有求和进行求和。

我不是 Java 程序员,所以我无法告诉 Java 中这是如何完成的,但至少你知道它背后的总体思路。

关于java - 当有多个温度产生器时计算平均温度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9646174/

相关文章:

java - 作者优先于读者的并发对象

java - GUI 的输入验证

java - JSR-303 验证的@NotNull 说明

http - 中间件如何在 Go 的 chi 路由中工作以及 http.Handler 参数在中间件中指的是什么?

java - Spring Data Neo4j 不会插入新节点,只会更新具有相同属性的现有节点

java - 使用 Spring Security (Spring Boot 3.0.2) 时如何访问 H2 控制台?

javascript - 在 redux 中间件中调度多个操作

javascript - 为什么 expressjs 在空闲时为 PUT 生成 ERR_EMPTY_RESPONSE?

javascript - "static"和 "non-static"在 Express 上下文中意味着什么?

javascript - 来自全局中间件的 ExpressJS : how to dump req. 参数