1
假設我有三項任務:從互聯網下載.zip,解壓縮文件,然後用解壓文件替換本地文件。我無法阻止主線程,因爲它正在被服務器使用,但我需要按順序完成這三項任務。有沒有辦法使用ExecutorService或類似的東西排隊這些任務,以便一個在另一個之後完成而不阻塞主線程?使用ExecutorService或類似隊列任務按順序完成?
假設我有三項任務:從互聯網下載.zip,解壓縮文件,然後用解壓文件替換本地文件。我無法阻止主線程,因爲它正在被服務器使用,但我需要按順序完成這三項任務。有沒有辦法使用ExecutorService或類似的東西排隊這些任務,以便一個在另一個之後完成而不阻塞主線程?使用ExecutorService或類似隊列任務按順序完成?
您可以使用單線程執行程序。下面的服務將與主線程並行運行,並且由e2
處理的三個任務將按順序運行。
ExecutorService e1 = Executors.newSingleThreadExecutor();
ExecutorService e2 = Executors.newSingleThreadExecutor();
e1.execute(new ExpressTask());
e2.execute(new SequentialTask("Part-One"));
e2.execute(new SequentialTask("Part-Two"));
e2.execute(new SequentialTask("Part-Three"));
e1.shutdown();
e2.shutdown();
只要運行一個線程:
new Thread() {
public void run() {
task1.run();
task2.run();
task3.run();
}
}.start();
難道你們就不能只是把序列這些操作在'Runnable'? – chrylis