【发布时间】:2015-04-14 21:26:38
【问题描述】:
我有需要处理的情况
我有一个类有发送方法,例子
@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
正确吗? 如果是,有没有更好的推荐方式?
谢谢
【问题讨论】:
标签: java concurrency java.util.concurrent