2014-02-26 40 views
1

假設我有三項任務:從互聯網下載.zip,解壓縮文件,然後用解壓文件替換本地文件。我無法阻止主線程,因爲它正在被服務器使用,但我需要按順序完成這三項任務。有沒有辦法使用ExecutorService或類似的東西排隊這些任務,以便一個在另一個之後完成而不阻塞主線程?使用ExecutorService或類似隊列任務按順序完成?

+0

難道你們就不能只是把序列這些操作在'Runnable'? – chrylis

回答

3

您可以使用單線程執行程序。下面的服務將與主線程並行運行,並且由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(); 
1

只要運行一個線程:

new Thread() { 
    public void run() { 
     task1.run(); 
     task2.run(); 
     task3.run(); 
    } 
}.start(); 
相關問題