개요Spring의 @Async 어노테이션은 메서드를 비동기적으로 실행할 수 있게 해주는 강력한 기능이다.스레드를 통해 비동기 방식으로 로직을 처리하여, 시간이 오래 걸리는 작업을 백그라운드에서 수행할 수 있다. @Async 사용 이점ThreadPoolExecutor를 직접 사용하지 않고 @Async를 사용할 때 얻을 수 있는 이점은 정말 많지만 가장 큰 이점을 뽑자면 코드의 간결성이다. //1. ThreadPoolExecutor 사용public void sendEmail(String email) { executor.execute(() -> { try { // 비동기로 실행할 로직 } catch (Exception e) { log.er..
개요동기와 비동기, 블로킹과 논블로킹, 많이 들어본 용어이지만 가끔씩은 헷갈린다.어떤 기준으로 나뉘었는지 알아보고 이 두 종류 조합도 알아보자. 동기와 비동기동기와 비동기를 나누는 기준은 '작업들을 순차적으로 수행하는지'에 대한 관점이다.동기는 작업을 순차적으로 수행하고, 비동기는 작업들이 순서에 상관없이 수행된다. 블로킹과 논블로킹블로킹과 논블로킹을 나누는 기준은 '작업의 제어권을 어떻게 처리하느냐'에 대한 관점이다.다른 말로 '현재 진행중인 작업이 block 되느냐 안되느냐'이다.A 작업이 B 작업을 호출할 때 제어권을 A가 B에게 넘기게 되어서 A 작업이 중단된다면, 해당 상황은 블로킹이다.반대로 A 작업이 B 작업을 호출해도 제어권을 A 작업이 그대로 갖고 있어 작업이 중단되지 않는다면, 해당..