当线程执行不同的时间时,如何执行不同的操作?

时间:2018-05-26 10:51:55

标签: java multithreading java.util.concurrent

存在一个休息服务,它执行一些计算并将结果打印在作为响应返回的excel文件中。随着数据的增加,我们希望实现以下行为。如果文件在3秒内就绪,请返回excel else,发送短信..然后将文件邮寄给用户。

任何建议,我们如何在Java中实现这个功能?

1 个答案:

答案 0 :(得分:3)

使用Future超时:

public String getExel() {
     CompletableFuture<String> getter = CompletableFuture.supplyAsync(() -> "result");
     try {
        return getter().get(3, TimeUnits.SECONDS);
     } catch(TimeoutException ex) {
       // invoke email sending
       getter.thenAcceptAsync(result -> sendEmail(result));

       // I will send you email later
       return "XXx to indicate you will send him later";
     }
}

public void sendEmail(String resultFromGetExel) {

}