Wygląda to tak, że odpowiedź jest od razu zwracana:
private final ExecutorService executor = Executors.newSingleThreadExecutor();
public void submitXYZ(XYZData XYZData) {
executor.submit(() -> {
processXYZ(XYZData);
});
}
public void submitXYZStatus(String requestRef, String requestStatus, String reasonComment) {
executor.submit(() -> {
sendXYZStatus(requestRef, requestStatus, reasonComment);
});
}
private void processXYZ(XYZData XYZData) {
XYZResponse XYZResponse = abc(XYZData);
if (XYZResponse.getResult().equals(ResponseEnum.DONE)) {
XYZStatus.sendXYZStatus(XYZData.getRequestRef(), ResponseEnum.DONE.name(), null);
} else {
XYZStatus.sendXYZStatus(XYZData.getRequestRef(), XYZResponse.getResult().name(),
XYZResponse.getErrorMessage());
}
}
private String sendXYZStatus(String requestRef, String requestStatus, String reasonComment) {
return XYZStatus.sendXYZStatus(requestRef, requestStatus, reasonComment);
}