Este es un código de muestra de example. Lo que necesito saber es cuándo se llama al call()
en el llamante? ¿Qué lo desencadena?¿Cuándo se llama al método call() en un ejecutante Java utilizando objetos invocables?
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);
}
}
entiendo la cuestión acerca de temas que estén disponibles en un momento impredecible, debería haber se le preguntó '¿cuándo se programará ** una llamada' **? - siempre que se programe en * submit() * entonces eso es todo lo que necesitaba saber :) – MalcomTucker
@Malcom: No creo que eso sea mejor pregunta, dado que la programación no es visible/observable para el programa, entonces, ¿qué cambiaría si se programara más adelante? –