我写了一个小应用程序,其中包括对JIRA REST API进行REST调用以及下载问题。我有一个进度条指示下载的进度。但是,实际上我需要进行两次REST调用。第一个需要在第二个开始之前完成。在他们之间我需要更新UI。
下面是一些示例代码:
// 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 :(得分:0)
您可以使用单个线程的EcecutorService
来控制日程安排:
ExecutorService service = Executors.newSingleThreadExecutor();
service.submit(task1);
service.submit(task2);
// shutdown after last submitted task
service.shutdown();