La interfaz llamable es similar a Runnable, que se puede ver desde el nombre, pero Runnable no devolverá el resultado y no puede lanzar una excepción que devuelva el resultado es más potente. .
La copia del código es la siguiente:
paquete com.future.test;
import java.io.filenotfoundException;
import java.io.ioException;
import java.util.concurrent.callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.executorservice;
import java.util.concurrent.executors;
import java.util.concurrent.futureTask;
import java.util.concurrent.timeunit;
import java.util.concurrent.timeOutException;
Mytest de clase pública {
// recibir la excepción atrapada en el método de ejecución, y luego el método personalizado lanza la excepción
// excepción de lanzamiento estático privado;
/**
* @param args
*/
public static void main (string [] args) {
// TODO STUB de método generado automático
Resultado de cadena = "";
EjecutorService Ejecutor = Ejecutors.NeWSingLethreadExeCutor ();
FutUreTask <String> Future =
New FutUreTask <String> (nuevo Callable <String> () {// usa la interfaz de llamada como parámetro de constructor
Call Public String () {
// La tarea real se ejecuta aquí, el tipo de valor de retorno aquí es una cadena, que puede ser de cualquier tipo
intentar {
Thread.sleep (10000);
} capt (interruptedException e) {
// bloque de captura generado automático
// excepción = e;
//e.printstacktrace ();
}
regresar "11111";
}});
Ejecutor.execute (futuro);
// puedes hacer cualquier otra cosa aquí
intentar {
resultado = futuro.get (5000, TimeUnit.MilliseConds); También puede usar Future.get () para obtener resultados sin establecer el tiempo de espera de ejecución.
} capt (interruptedException e) {
//System.out.println("Task ha sido cancelado ");
futuro.cancel (verdadero);
} catch (ExecutionException e) {
futuro.cancel (verdadero);
} Catch (TimeOutException e) {
futuro.cancel (verdadero);
} finalmente {
ejecutor.shutdown ();
}
System.out.println ("resultado:"+resultado);
}
/* public void throwexception () lanza FileNotFoundException, IOException {
if (instancia de excepción de FileNotFoundException)
Lanzar (FileNotFoundException) Excepción;
if (instancia de excepción de ioexception)
Lanzar (IOException) Excepción;
}*/
}