如何解决有没有办法在不阻塞主线程的情况下以相同的方法使用 Future.get()
我们对数以千计的指标进行了时间序列观测,它们都归结为相同的方法,通过各自的处理器进行处理。我以多线程方式将观察结果发送到各自的处理器,但 future.get() 阻塞主线程的时间比预期的要长。有什么办法可以改善吗?
ExecutorService[] pools = new ExecutorService[Runtime.getRuntime().availableProcessors()];
...
@Override
public Observation apply(final Observation observation) {
Callable<Observation> task = new Processor(observation);
int hash = Math.abs(observation.getMetricId().hashCode());
Future<Observation> result = pools[hash % pools.length].submit(task);
try {
return result.get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
return null;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。