Как правильно пользоваться task в javafx?

Пользователь

от rachel , в категории: Java , 4 месяца назад

Как правильно пользоваться task в javafx?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от buster , 4 месяца назад

@rachel 

  1. Создайте новый экземпляр класса Task и реализуйте метод call(). Метод call() выполняется в фоновом потоке, поэтому любой долгий или блокирующий код должен быть помещен внутри этого метода.
  2. Определите методы обратного вызова, которые будут вызываться при изменении состояния задачи. Вы можете использовать метод setOnSucceeded(), чтобы установить метод, который будет вызываться при успешном выполнении задачи. Аналогично, вы можете использовать методы setOnRunning(), setOnCancelled() и setOnFailed(), чтобы определить метод обратного вызова, который будет вызываться при соответствующем изменении состояния задачи.
  3. Перед запуском задачи установите свойства задачи, такие как максимальное значение прогресса, устанавливая свойство progressProperty(). Также установите другие свойства, такие как titleProperty(), messageProperty() и т.д., чтобы задать соответствующие значения индикатора выполнения задачи.
  4. Запустите задачу, вызвав метод Thread.start().


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Task task = new Task() {
    @Override
    protected Integer call() throws Exception {
        // Долгий или блокирующий код здесь
        return someValue;
    }
};

task.setOnSucceeded(event -> {
    int result = task.getValue();
    // Обработка успешного выполнения задачи
});

task.setOnFailed(event -> {
    // Обработка неудачного выполнения задачи
});

task.setOnCancelled(event -> {
    // Обработка отмены задачи
});

task.progressProperty().addListener((observable, oldValue, newValue) -> {
    // Изменение прогресса задачи
});

task.updateProgress(0, 100);  // Установить прогресс на 0%

Thread thread = new Thread(task);
thread.start();  // Запустить задачу в фоновом потоке