这个问题本身就说明了一切。我知道如何创建一个线程池执行器并在给定的线程池执行器上启动异步,但我想知道有什么方法可以为不同的线程设置不同的超时时间?
例子 :
@Async("thread pool executor") Func1
@Async("thread pool executor") Func2
如果是,我该如何实现?
我希望第一个时间为 7 秒,第二个时间为 1 秒。
这个问题本身就说明了一切。我知道如何创建一个线程池执行器并在给定的线程池执行器上启动异步,但我想知道有什么方法可以为不同的线程设置不同的超时时间?
例子 :
@Async("thread pool executor") Func1
@Async("thread pool executor") Func2
如果是,我该如何实现?
我希望第一个时间为 7 秒,第二个时间为 1 秒。
有一种方法可以设置Future对象而不是对象的时间ThreadPool,但是您不能在线程级别设置它,仍然可以在任务级别设置它(因为无法保证哪个线程将执行任务)
例子
@Async("someExecutor")
public Future<String> asyncService() {
return CompletableFuture.completedFuture("start").thenApply(s->{
System.out.println(Thread.currentThread().getName()+" - "+Thread.currentThread().getThreadGroup());
return "hello";
});
}
得到Future
Future<String> result = asyncService.asyncService();
result.get(3, TimeUnit.SECONDS);