package servicetest; import javafx.application.Application; import javafx.concurrent.Service; import javafx.concurrent.Task; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.layout.HBox; import javafx.stage.Stage; /** * * @author kcr */ public class ServiceTest extends Application { class MyService extends Service { @Override protected Task createTask() { return new Task() { final long startTime = System.currentTimeMillis(); long fib = 0; long fib1 = 0; long fib2 = 1; @Override protected Void call() throws Exception { while (true) { for (int i = 0; i < 100000; i++) { fib = fib1 + fib2; fib2 = fib1; fib1 = fib; } System.err.println("" + fib); Thread.sleep(100); double elapsedTime = (double)(System.currentTimeMillis() - startTime) / 1000; if (elapsedTime > 10.0) break; } System.err.println("Done"); return null; } }; } } @Override public void start(Stage stage) { try { System.err.println("javafx.version = " + System.getProperty("javafx.version")); } catch (SecurityException ex) { System.err.println("" + ex); } final MyService service = new MyService(); Button startButton = new Button("Start"); startButton.setOnAction(e -> { service.start(); }); Button stopButton = new Button("Stop"); stopButton.setOnAction(e -> { service.cancel(); }); Label status = new Label(""); status.textProperty().bind(service.stateProperty().asString()); HBox root = new HBox(startButton, stopButton, status); Scene scene = new Scene(root, 400, 300); stage.setScene(scene); stage.show(); } public static void main(String[] args) { System.err.println("Hello"); Application.launch(args); } }