多任务ScheduledService
创建MyScheduledService继承ScheduledService
public class MyScheduledService extends ScheduledService<Number> { int sum = 0; @Override protected Task<Number> createTask() { System.out.println("创建任务"); return new Task<Number>() { @Override protected Number call() throws Exception { sum++; System.out.println(sum); return sum; } @Override protected void updateValue(Number value) { super.updateValue(value); if (value.intValue() >= 10) { // 停掉外部的任务 MyScheduledService.this.cancel(); System.out.println("任务取消"); } } }; } }
创建MyScheduledService类
MyScheduledService myScheduledService = new MyScheduledService(); // 多久之后启动 myScheduledService.setDelay(Duration.seconds(5)); // 1s运行一次 myScheduledService.setPeriod(Duration.seconds(1)); // 任务失败是否重新启动 myScheduledService.setRestartOnFailure(true); // 失败重试次数 myScheduledService.setMaximumFailureCount(4);
操作MyScheduledService
start.setOnAction(event -> { myScheduledService.start(); }); cancel.setOnAction(event -> { myScheduledService.cancel(); }); restart.setOnAction(event -> { myScheduledService.restart(); }); reset.setOnAction(event -> { myScheduledService.reset(); progressBar.setProgress(0); }); myScheduledService.valueProperty().addListener(((observable, oldValue, newValue) -> { Optional.ofNullable(newValue).ifPresent(number -> message.setText(String.valueOf(number.intValue()))); })); myScheduledService.lastValueProperty().addListener(((observable, oldValue, newValue) -> { Optional.ofNullable(newValue).ifPresent(number -> System.out.println("newValue.intValue() = " + number.intValue())); }));