Я делаю что-то вроде комплекта разработчика симулятора IOT. Чтобы постоянно обновлять статус моих устройств (сохраненный в разных файлах), я создал TimerTask с частотой обновления sh 10 мс, который непрерывно считывает строку. Это код:
public void update() throws IOException {
File f = new File("ClaireSDK/sensor/"+id+".sensor");
Timer t = new Timer();
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
try {
Scanner s = new Scanner(f);
String line = s.next();
StringTokenizer st = new StringTokenizer(line,";;;");
id = st.nextToken();
isTurnedOn = Boolean.valueOf(st.nextToken());
input = st.nextToken();
output = st.nextToken();
if(isTurnedOn) {
switchButton.setForeground(Color.GREEN.darker());
switchButton.setText("ON");
}
else {
switchButton.setForeground(Color.RED.darker());
switchButton.setText("OFF");
}
updateGui();
revalidate();
repaint();
s.close();
} catch (Exception err) {
}
}
}, 0, refreshRate);
}
Я пробовал с BufferedReader
, но результаты те же. Обновите GUI метод refre sh a JTextField
, который печатает состояние устройства. В любом случае, добавив три или четыре устройства в мою симуляцию, мой процессор и графический процессор нагреваются до 101 ° C, а скорость вращения вентилятора увеличивается очень быстро. (У меня MacBook Pro).
Что мне нужно сделать, чтобы улучшить свой код?