Как настроить политику выключения API структурированного параллелизма Java 21?JAVA

Программисты JAVA общаются здесь
Anonymous
Как настроить политику выключения API структурированного параллелизма Java 21?

Сообщение Anonymous »

У меня есть следующий вариант использования, в котором я хочу получить информацию о нескольких состояниях ошибок для устройства из нескольких источников данных. Я хочу немедленно завершить все задачи и вернуть основной задаче статус ошибки, если какой-либо из статусов истинен. Как я могу этого добиться? Вот моя логика запроса:

Код: Выделить всё

try (var scope = new StructuredTaskScope()) {
scope.fork(()->posRepo.findInspectionByUnitId(unitId));
scope.fork(()->posRepo.findEventOfFireByUnitId(unitId));
scope.fork(()->faultRepo.findGeneralErrorByUnitId(unitId));
scope.fork(()->ardInfRepo.findArdModeByUnitId(unitId));
scope.fork(()->ardInfRepo.findArdPowerStatusByUnitId(unitId));
scope.fork(()->ardInfRepo.findArdModeByUnitId(unitId));
// Once a task return true, close all remaining tasks,and return the  signal:"true" to main task;
scope.join();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}

Код: Выделить всё

public interface ElePosRepo extends CrudRepository {

Optional findInspectionByUnitId(Integer unitId);
Optional findEventOfFireByUnitId(Integer unitId);
}
Я ожидаю, что когда подзадача вернет true, все остальные подзадачи в группе задач должны быть немедленно завершены. Если все подзадачи возвращают значение false или пусты, основная задача должна возвращать значение false после завершения всех подзадач.


Подробнее здесь: https://stackoverflow.com/questions/782 ... rrency-api

Вернуться в «JAVA»