我有一个需要处理的情况
我有一个具有发送方法的类,例如
@Singleton
class SendReport {
public void send() {}
}
send 方法是从用户点击网页时调用的,必须立即返回,但必须启动一系列需要时间的任务
send
->|
| |-> Task1
<-| |
<-|
|
|-> Task2 (can only start when Task1 completes/throws exception)
<-|
|
|-> Task3 (can only start when Task2 completes/throws exception)
<-|
我是 Java 并发世界的新手,正在阅读相关内容。根据我的理解,我需要一个 Executor Service
和 submit()
一个作业(Task1
)来处理并获取 Future
返回继续。
我说得对吗?
对我来说理解和设计最困难的部分是
- 如何以及在哪里处理任何此类任务的异常?
- 据我所知,我必须做类似的事情吗?
ExecutorService executorService = Executors.newFixedThreadPool(1);
Future futureTask1 = executorService.submit(new Callable(){
public Object call() throws Exception {
System.out.println("doing Task1");
return "Task1 Result";
}
});
if (futureTask1.get() != null) {
Future futureTask2 = executorService.submit(new Callable(){
public Object call() throws Exception {
System.out.println("doing Task2");
return "Task2 Result";
}
}
... and so on for Task 3
正确吗? 如果是,有更好的推荐方法吗?
谢谢
最佳答案
Dependent task execution使用 Dexecutor 让一切变得简单
免责声明:我是所有者
这里是一个例子,它可以很容易地运行下面的复杂图,你可以引用this了解更多详情
这里是an example
关于java - 如何运行具有相关任务的并发作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29637692/