1. Describe y narrativa
Al programar en múltiples lecturas. Puede encontrar una necesidad, es decir, cuando los subprocesos que abro terminan, quiero obtener los datos devueltos en cada hilo al mismo tiempo y luego realizar un procesamiento unificado. Según este requisito, la combinación de futuro y llamable es un gran uso.
Algunas personas también pueden decir que puedo usar la sincronización para completar este requisito, pero de hecho es posible en casos ordinarios. Pero en un caso especial, no funcionará:
Imagine que ha habilitado múltiples hilos para calcular sincrónicamente algunos datos, pero todos saben que los hilos competirán por los recursos, es decir. Cuando habilita múltiples hilos para sincronizar el cálculo de los datos. De hecho, la orden de cálculo entre los hilos no puede ser nula, por supuesto, no es imposible lidiar con él a menos que no cometa un gran error. En tal caso. La combinación de futuro y llamable es la mejor opción.
2. Ejemplos de muestra
Los ejemplos de estas dos categorías son en realidad muy fáciles, principalmente dependiendo de si puede encontrar su uso en el uso real. En el código:
prueba de paquete; import java.util.concurrent.callable; import java.util.concurrent.executionException; import java.util.concurrent.executorservice; import java.util.concurrent.executors; import java.util.concurrent.future; clase pública FeatureCallableStest {private static ejecutorservice servicio = ejecutors.newFixedThreadPool (100); privado static int count = 1; public static void main (string [] args) lanza interruptedException, ExecutionException {int sum = 0; for (int i = 0; i <100; i ++) {futuro <integer> futuro = servicio.submit (new Callable <Ingerger> () {@Override public Integer Call () lanza la excepción {System.out.Println (Thread.CurrentThread (). GetName ()); Return ++ Count;}); int f = futuro.get (); suma += f; System.out.println ("Future Is" + F); } System.out.println ("suma es" + suma); servicio.shutdownnow (); }}