-
[Springboot] 스레드와 프로세스를 구분해보자!Server/Spring Boot 2025. 4. 18. 17:06728x90반응형
✅ 스레드와 프로세스의 차이점
프로세스(Process)는 실행 중인 프로그램으로, 운영체제로부터 독립적인 메모리 공간(코드, 데이터, 힙, 스택)을 할당받아 실행됩니다.
스레드(Thread)는 프로세스 내에서 실행되는 작업의 최소 단위이며, 하나의 프로세스는 여러 개의 스레드를 가질 수 있습니다.
구분 프로세스 스레드 정의 실행 중인 프로그램 프로세스 내에서 실행되는 작업의 흐름 메모리 공간 독립적 공유 (코드, 힙 등은 공유하고, 스택은 별도) 통신 방법 IPC(Inter-Process Communication) 필요 메모리 공유로 간편 오버헤드 높음 (컨텍스트 스위칭 비용 큼) 낮음 (가벼움) 실행 단위 하나의 실행 단위 멀티 작업 가능 💡 Java Spring에서의 스레드 사용 예시
Spring 애플리케이션은 기본적으로 싱글 스레드로 동작하지만,
@Async
를 사용하면 비동기 작업을 수행하는 별도의 스레드를 사용할 수 있습니다.@Service public class AsyncService { @Async public void runAsyncTask() { System.out.println("비동기 작업 시작: " + Thread.currentThread().getName()); try { Thread.sleep(2000); // 예시용 딜레이 } catch (InterruptedException e) { Thread.currentThread().interrupt(); } System.out.println("비동기 작업 완료"); } }
@RestController @RequiredArgsConstructor public class TestController { private final AsyncService asyncService; @GetMapping("/start") public String startTask() { asyncService.runAsyncTask(); // 별도 스레드에서 실행 return "요청 완료!"; } }
주의:
@EnableAsync
를@SpringBootApplication
클래스에 추가해야 합니다.@SpringBootApplication @EnableAsync public class MySpringApp { public static void main(String[] args) { SpringApplication.run(MySpringApp.class, args); } }
이렇게 하면 HTTP 요청이 와도 메인 스레드는 바로 응답하고,
@Async
메서드는 별도의 스레드에서 비동기적으로 실행됩니다.728x90반응형'Server > Spring Boot' 카테고리의 다른 글
[Springboot] 단위 테스트 코드 작성해보기 (Service, Dao, Repository) (0) 2025.04.21 [Springboot] 테스트도구 JUnit5 에 대해 알아보자! (0) 2025.04.21 💡 Java Spring에서 자주 사용하는 ObjectMapper (1) 2025.04.17 MapStruct 의 다양한 사용에 대해 알아보자 (0) 2025.04.16 MapStruct 의 @Mapping 사용 방법을 알아보자! (1) 2025.04.16