Я написал много задач Async Future Calls один под другим в моей программе java. Давать один образец нижеБудущая задача Асинхронные вызовы, зависающие при возникновении исключения
FutureTask<List<ConditionFact>> x = getConditionFacts(final Member member);
FutureTask<List<RiskFact>> x = getRiskFacts(final Member member);
FutureTask<List<SAEFact>> x = getSAEFacts(final Member member);
Теперь Предположим, я сознательно создать исключение во втором вызове выше, и приложить все 3 вызова получить() внутри один TRY/поймать блока, я не вижу исключение приходит поймать блок и моя java-программа просто стоит на месте. Все три вызова метода происходят одновременно.
try {
FutureTask<List<ConditionFact>> task = getConditionFacts(member);
// wait for the task to complete and get the result:
List<ConditionFact> conditionFacts = task.get();
FutureTask<List<ConditionFact>> task = getRiskFacts(member);
// wait for the task to complete and get the result:
List<RiskFact> conditionFacts = task.get();
}
catch (ExecutionException e) {
// an exception occurred.
Throwable cause = e.getCause(); // cause is the original exception thrown by the DAO
}
Но если я вложу каждый из get() в отдельный блок catch, я могу их поймать. Зачем? Также в тот момент, когда я запускаю каждый метод get() в блоках try catch, я теряю многопоточность. Вызовы метода происходят один за другим, как кодированный
FutureTask<List<ConditionFact>> task = getConditionFacts(member);
// wait for the task to complete and get the result:
try {
List<ConditionFact> conditionFacts = task.get();
}
catch (ExecutionException e) {
// an exception occurred.
Throwable cause = e.getCause(); // cause is the original exception thrown by the DAO
}
FutureTask<List<ConditionFact>> task = getRiskFacts(member);
// wait for the task to complete and get the result:
try {
List<RiskFact> conditionFacts = task.get();
}
catch (ExecutionException e) {
// an exception occurred.
Throwable cause = e.getCause(); // cause is the original exception thrown by the DAO
}
, когда я могу поймать исключение я теряю много поточность и когда я могу породить мульти темы я теряю исключение.
Любые идеи, как обрабатывать исключения индивидуально и достигают нескольких нарезание резьбы и в то же время
по-прежнему висит ... – Shiv