Пожалуйста, помогите мне найти лучшее решение. Мне нужно обработать какое-то событие, проверить и обработать. Я реализовал, и он работает нормально с подходом 1, упомянутым ниже. Но у меня есть комментарий для использования Executors.newSingleThreadExecutor (). Но я не понимаю, в чем преимущество его использования? Может ли кто-нибудь помочь мне понять подход 2, упомянутый ниже.
Approach 1:
===========
@Path("/webhook")
class A {
@Path("/order")
public void consumeMessage(String body) {
POEvent event = objectMapper.readValue(body, new TypeReference<POEvent>() {
handleEvent(event);
}
public void handleEvent(POEvent po) {
//validation on this event
processEvent(po);
}
processEvent(POEvent poEvent) {
//call external system
}
}
Вот предложение, которое я получил.
Approach 2:
===========
@Path("/webhook")
class A {
private ExecutorService executor = Executors.newSingleThreadExecutor();
@Path("/order")
public void consumeMessage(String body) {
POEvent event = objectMapper.readValue(body, new TypeReference<POEvent>() {
handleEvent(event);
}
public void handleEvent(POEvent po) {
//validation on this event
executor.submit(() -> {
processEvent(po);
});
}
processEvent(POEvent poEvent) {
//call external system
}
}