2016-11-28 81 views
0

我寫了一個小應用程序,其中包括其他事情使得對JIRA REST API的REST調用會下載問題。我有一個進度條表示下載進度。但是,實際上我需要做兩個REST調用。第一個需要在第二個開始之前完成。在他們之間,我需要更新用戶界面。Java(FX)用戶界面更新和(後臺)下載任務

下面是一些示例代碼:

// Loads the dialog from the fxml file and shows it 
@FXML 
public void showProgressDialog() { 
    mainApp.showDownloadProgressDialog(); 
} 

// Retrieves some meta information 
public void firstDownload() { 
    Task<Void> task = new Task<Void>() { 
     @Override 
     public Void call() { 
      // do something 
     } 
    }; 
    new Thread(task).start(); 
} 
// Do some UI update 

// Retrieves the actual issues 
public void secondDownload() { 
    Task<Void> task = new Task<Void>() { 
     @Override 
     public Void call() { 
      for (int i = 0; i < limit; i++) { 
       // so something 
       updateProgress((double) i/(double) limit, max); 
      } 
     } 
    }; 
    new Thread(task).start(); 
} 
// Do some UI update 

我怎麼能保證上面顯示的所有功能中正是這種順序執行?

感謝您的幫助!

+0

如何2種方法啓動任務叫什麼?你爲什麼不能把它們合併成一個'Task'? – fabian

+0

謝謝,現在發現只有一個任務的解決方案! –

回答

0

你可以使用一個EcecutorService用一個單獨的線程控制調度:

ExecutorService service = Executors.newSingleThreadExecutor(); 

service.submit(task1); 
service.submit(task2); 

// shutdown after last submitted task 
service.shutdown(); 
+0

謝謝,我也試過,它幫助我解決了類似的問題! –