繁体   English   中英

使用ExecutorService或类似的要按顺序完成的队列任务?

[英]Use ExecutorService or Similar to Queue Tasks to be Completed in Order?

假设我有三个任务:从Internet下载.zip,解压缩文件,然后将本地文件与解压缩的文件交换出去。 我不能阻塞主线程,因为它正在被服务器使用,但是我需要按顺序完成这三个任务。 有没有一种方法可以使用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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM