作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题本身就说明了一切。我知道如何创建线程池执行器并在给定的线程池执行器上启动异步,但我想知道是否有任何方法可以为不同线程设置不同的超时?
示例:
@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);
关于java - 从线程池执行器设置线程超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53805466/
我是一名优秀的程序员,十分优秀!