【发布时间】:2020-04-16 19:26:23
【问题描述】:
我相信我们公司有一个边缘案例,它阻止我进入“从不使用全局变量阵营”。
我们需要编写一个在我们的盒子中运行的嵌入式应用程序,它可以从医院的设备中提取医疗数据。
即使医疗设备被切断、网络中断或我们的盒子设置发生变化,它也应该无限运行。设置是从 .txt 文件中读取的,可以在运行时更改,最好没有问题。
这就是为什么单例模式对我没用。所以我们不时返回(读取 1000 条数据后)并读取设置,如下所示:
public static SettingForIncubator settings;
public static void main(String[] args) {
while(true){
settings = getSettings(args);
int counter=0;
while(medicalDeviceIsGivingData && counter < 1000){
byte[] data = readData(); //using settings
//a lot of of other functions that use settings.
counter++;
}
Thread.Sleep(100); //against overheating and CPU usage.
}
public byte[] readData(){
//read Data from the port described in settings variable
}
}
还有其他方法可以设计程序吗?
【问题讨论】:
-
此代码未在循环内使用全局
settings。 -
while(true)没有Thread.sleep会让你的 CPU 很快达到 100% -
我当然使用 Thread.sleep()。我使用 readData() 中的设置。我会在伪代码中添加它们。
-
@OnatKorucu 您已将“设置”定义为类变量,然后在主函数中再次定义,当在 readData() 中使用一个时?
-
@BHAWANI SINGH 你是对的,在伪代码中我不小心定义了两次设置。我正在修复它。
标签: java while-loop global-variables global static-variables