Привет Я не понимаю, почему в мире этот цикл выполняется 3 раза в секунду. Это фактически код вычисления скорости загрузки, и он довольно прямолинейный. он измеряет байты, сделанные за предыдущие 1 сек, а затем добавляет их в список, затем усредняет все элементы в списке, а затем обновляет gui, а в последний раз спящий на 1 секунду.цикл выполнения 3 раза java
private void update() {
List<Float> list = new ArrayList<>();
do {
float averageSpeed = 0;
// Calculating
// I have a multiple threads which are downloading this file in segments
// and all of them increment value of data.bytesDone when ever
// they download a portion of data so I calculate bytesDone in one sec
// and then take average of it using a list which contain speed values of
// previous 20 sec.
float speed = (data.bytesDone.get() - currentBytes);
currentBytes = data.bytesDone.get();
System.out.println(speed);
list.add(speed);
if (list.size() > 20) {
list.remove(0);
}
for (Float increment : list) {
averageSpeed += increment;
}
averageSpeed /= list.size();
// Updating Gui //
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} while (data.state.equals(State.ACTIVE) && data.bytesDone.get() != data.sizeOfFile);
}
EDIT: Ребята, я действительно не могу понять, почему этот цикл является скорость печати 3 раза в секунду он всегда должен печатать только один раз в секунду. TY
Что такое 'data'? –
Можем ли мы видеть полный код (возможно, ссылку на pastebin) – Coffee
Ну его довольно большой класс с большим количеством материала, связанного с javafx gui. Я редактирую код, поэтому он более понятен. –