gpt4 book ai didi

java - 什么时候使用 Callable 对象在 Java Executor 中调用 call() 方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:51:57 32 4
gpt4 key购买 nike

这是来自 example 的一些示例代码.我需要知道的是 call() 何时在可调用对象上被调用?是什么触发了它?

public class CallableExample {

public static class WordLengthCallable
implements Callable {
private String word;
public WordLengthCallable(String word) {
this.word = word;
}
public Integer call() {
return Integer.valueOf(word.length());
}
}

public static void main(String args[]) throws Exception {
ExecutorService pool = Executors.newFixedThreadPool(3);
Set<Future<Integer>> set = new HashSet<Future<Integer>>();
for (String word: args) {
Callable<Integer> callable = new WordLengthCallable(word);
Future<Integer> future = pool.submit(callable); //**DOES THIS CALL call()?**
set.add(future);
}
int sum = 0;
for (Future<Integer> future : set) {
sum += future.get();//**OR DOES THIS CALL call()?**
}
System.out.printf("The sum of lengths is %s%n", sum);
System.exit(sum);
}
}

最佳答案

一旦您提交可调用对象,执行器将安排可调用对象执行。根据执行程序,这可能会直接发生,也可能会在线程可用时发生。

另一方面,调用 get 只会等待检索计算结果。

准确地说:在调用 submit 和调用 get 返回之间的某个地方,调用了可调用对象。

关于java - 什么时候使用 Callable 对象在 Java Executor 中调用 call() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2461819/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com