Казайливый интерфейс аналогичен запускающемуся, который можно увидеть из имени, но Runnable не будет возвращать результат и не может бросить исключение, которое возвращает результат. .
Кода -копия выглядит следующим образом:
пакет com.future.test;
Импорт java.io.filenotFoundException;
импортировать java.io.ioexception;
импортировать java.util.concurrent.callable;
Импорт java.util.concurrent.executionException;
импортировать java.util.concurrent.executorservice;
импортировать java.util.concurrent.executors;
Импорт java.util.concurrent.futureTask;
импортировать java.util.concurrent.timeUnit;
импортировать java.util.concurrent.timeoutexception;
открытый класс myTest {
// Получить исключение, попавшее в метод запуска, а затем пользовательский метод бросает исключение
// частное статическое исключение броска;
/**
* @param args
*/
public static void main (string [] args) {
// TODO Автогенерированный метод заглушка
String result = "";
Executorservice executor = executors.newsingleThreadExeCutor ();
FutureTask <string> future =
Новый FutureTask <String> (новый Callible <string> () {// Использование используемого интерфейса в качестве параметра конструктора
public String call () {
// Здесь выполняется реальная задача, тип возвращаемого значения здесь - это строка, которая может быть любого типа
пытаться {
Thread.sleep (10000);
} catch (прерванная экспрессия e) {
// Todo Auto Generated Catch Blach
// exception = e;
//e.printstacktrace ();
}
вернуть "11111";
}});
Исполнитель.execute (Future);
// Вы можете сделать все еще здесь
пытаться {
result = future.get (5000, TimeUnit.milliseconds); Вы также можете использовать Future.get () для получения результатов без установки тайм -аута выполнения.
} catch (прерванная экспрессия e) {
//System.out.println("task был отменен »);
Future.cancel (True);
} catch (executionException e) {
Future.cancel (True);
} catch (TimeOutException e) {
Future.cancel (True);
} окончательно {
Исполнитель.shutdown ();
}
System.out.println ("Результат:"+Результат);
}
/* public void throwexception () бросает filenotfoundexception, ioexception {
if (экземпляр исключения FilenotFoundException)
бросить (filenotfoundexception) исключение;
if (экземпляр Exception Of ioException)
бросить (ioException) исключение;
}*/
}