对于某些耗时任务,可以将其包装在后台线程运行;

JavaFX中创建后台线程有以下几种方式

1、使用 javaFX.application.Platform

Platform.runLater(new Runnable(){
    @Override
     public void run() {
          time_consuming_task(); //需要运行的耗时任务代码
     }
});

2、使用 javaFX.concurrent.Task

JavaFX中处理比较耗时的任务或操作,在不阻塞UI线程的情况可以用到javafx.concurrent.Task类;Task 实现了Worker和EventTarget接口,并且继承了java.util.concurrent.FutureTask 类,Task可作为普通Runnable直接供Thread使用,也可作为Callable传递给ExecutorService。Task由 Runnable和 Future组成,因此可由Thread直接执行,以下是调用示例:

Task<String> task = new Task<String>(){
    @Override  
    protected Integer call() throws Exception {   //回调的耗时任务,返回T结果
        String result = time_cosuming_work();
        return result;
    }  
  
    @Override    
    protected void running() {         //线程运行状态时,可执行的代码
        setMessage("running");  
    }  
    @Override  
    protected void succeeded() {      //线程成功运行结束时,可执行的代码  
        setMessage("succeseded done");    
    }  
    @Override                        //线程运行失败时,可执行的代码
    protected void failed() {  
        setMessage("failed");  
    }  
}

new Thread(task).start();

3、使用 Thread 执行 Runnable任务类

new Thread(new Runnable(){
    public void runnable(){
         time_consuming_task();
    }
}).start();

4、使用线程池 ExecutorServices;

ExecutorService executor = Executors.newFixedThreadPool(1); 
executor.execute(new Runnable(){
     public void run(){
          time_consuming_task();
     }
});
executor.shutdown();   /shutdownNow();