С использованием и без использования Executors.newSingleThreadExecutor - PullRequest
0 голосов
/ 13 сентября 2018

Пожалуйста, помогите мне найти лучшее решение. Мне нужно обработать какое-то событие, проверить и обработать. Я реализовал, и он работает нормально с подходом 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 
    }
}
...