我想澄清一下这段代码:
ExecutorService executor = Executors.newCachedThreadPool();
Callable < Map < String, ? >> task = new Callable < Map < String, ? >> () {
@Override
public Map < String, ? > call() throws Exception {
Map < String, ? > result = cc.execute();
while (true) {} // notice this
return result;
}
};
Future < Map < String, ? >> futureResult = executor.submit(task);
Map < String, ? > result = futureResult.get(timeoutInSeconds, TimeUnit.SECONDS);
任务内部是while(true)
代码,根据我的观察,此任务正好在Map < String, ? > result = futureResult.get(timeoutInSeconds, TimeUnit.SECONDS);
此处设置的时间终止。
这里有一个对话:https://github.com/nginx/unit/issues/278并不是get
真正打扰的人。
我的问题是,就超时而言,java.util.concurrent.Future的行为是什么?