2013-05-29 56 views

回答

3

是的,看到Taskjavadoc報價:

因爲任務是專爲使用JavaFX GUI應用程序的使用,它可以確保每一個變化,以它的公共屬性,以及更改狀態,錯誤和事件處理函數的通知,這些都發生在主JavaFX應用程序線程中。

可以使用下面的代碼驗證自己這樣的情況:

task.setOnSucceeded(new EventHandler<WorkerStateEvent>() { 

     @Override 
     public void handle(WorkerStateEvent t) { 
      System.out.println(Thread.currentThread().getName()); 
     } 
    }); 

輸出應該是:

的JavaFX應用程序線程

+0

啊冷靜,並沒有意識到這一點我可以檢查這個如此簡單。對於我來說,任務描述並不完全清楚,因爲「事件處理程序的更改通知」,我錯過了一個清晰的「任務事件在應用程序線程上執行」。 –

+1

您也可以使用Platform.isFXApplicationThread()來檢查相同的事情:http://docs.oracle.com/javafx/2/api/javafx/application/Platform.html#isFxApplicationThread() –