A interface chamada é semelhante ao Runnable, que pode ser visto no nome, mas o Runnable não retornará o resultado e não pode lançar uma exceção que retorne o resultado. .
A cópia do código é a seguinte:
pacote com.future.test;
importar java.io.filenotfoundException;
importar java.io.ioException;
importar java.util.Concurrent.Callable;
importar java.util.concurrent.executionException;
importar java.util.concurrent.executorService;
importar java.util.concurrent.executores;
importar java.util.concurrent.futureTask;
importar java.util.Concurrent.TimeUnit;
importar java.util.Concurrent.TimeOutException;
classe pública mytest {
// recebe a exceção capturada no método de execução e, em seguida, o método personalizado lança a exceção
// Exceção de arremesso estático privado;
/**
* @param args
*/
public static void main (string [] args) {
// TODO Method Stub
String result = "";
ExecutorService Exector = Executores.NewsingLethReadExecutor ();
FutureTask <string> futuro =
new FutureTask <String> (novo callable <string> () {// use a interface chamada como parâmetro construtor
public String Call () {
// A tarefa real é executada aqui, o tipo de valor de retorno aqui é string, que pode ser de qualquer tipo
tentar {
Thread.sleep (10000);
} catch (interruptedException e) {
// TODO BLOCO DE CAPAGEM AUTOMAGEM
// exceção = e;
//e.printStackTrace ();
}
retornar "11111";
}});
executor.execute (futuro);
// você pode fazer qualquer outra coisa aqui
tentar {
Result = FUTURO.GET (5000, TimeUnit.MillisEconds); Você também pode usar o futuro.get () para obter resultados sem definir o tempo limite da execução.
} catch (interruptedException e) {
//System.out.println("task foi cancelado ");
futuro.cancel (verdadeiro);
} catch (ExecutionException e) {
futuro.cancel (verdadeiro);
} catch (timeoutException e) {
futuro.cancel (verdadeiro);
} finalmente {
executor.shutdown ();
}
System.out.println ("Resultado:"+resultado);
}
/* public void tlowException () lança filenotfoundException, ioexception {
if (instância de exceção do filenotfoundException)
Exceção de arremesso (filenotfoundException);
se (instância de exceção da ioexception)
Exceção de arremesso (ioexception);
}*/
}