소소한개발팁
article thumbnail
Published 2023. 9. 24. 19:07
쓰레드(Thread) 프레임워크/Spring
반응형

쓰레드(Thread)란?

쓰레드는 프로세스 내에서 실행되는 독립적인 작업 단위입니다. 프로세스는 실행 중인 프로그램을 나타내며, 각각의 쓰레드는 프로세스 내에서 코드 실행과 메모리 공유를 동반하며 별도로 실행됩니다. 쓰레드는 다양한 운영체제와 프로그래밍 언어에서 지원되며, 자바에서도 강력하게 활용됩니다.

 

멀티쓰레딩(Multithreading)이란?

멀티쓰레딩은 하나의 프로세스 내에서 여러 쓰레드를 생성하고 동시에 실행하여 병렬 처리를 가능하게 하는 프로그래밍 기술입니다. 멀티쓰레딩을 통해 여러 작업을 동시에 처리하거나, 다중 코어 CPU를 활용하여 성능을 향상시킬 수 있습니다.

 

쓰레드의 장점

성능 향상: 멀티쓰레딩을 사용하면 병렬 처리로 인해 프로그램의 성능을 향상시킬 수 있습니다. 여러 작업을 동시에 처리하므로 작업이 끝나기를 기다릴 필요가 없습니다.

응답성 향상: UI 응용 프로그램에서 쓰레드를 사용하면 사용자 인터페이스의 응답성을 유지할 수 있습니다. 긴 작업을 백그라운드에서 실행하여 UI를 블록하지 않습니다.

자원 공유: 쓰레드는 공유 메모리에 접근할 수 있으므로 데이터를 효율적으로 공유하고 통신할 수 있습니다.

 

쓰레드의 사용 방법

쓰레드 생성: 언어나 런타임 환경에 따라 쓰레드를 생성하고 시작하는 방법이 다를 수 있습니다. 자바에서는 Thread 클래스를 상속받거나 Runnable 인터페이스를 구현하여 쓰레드를 생성합니다.

쓰레드 실행: 생성된 쓰레드를 시작하고 실행합니다. 이때 쓰레드의 run 메서드 내에 실행할 코드를 정의합니다.

동기화(Synchronization): 공유 자원에 대한 동시 접근을 관리하기 위해 동기화 메커니즘을 사용합니다. 락(lock)을 활용하여 쓰레드 간의 순서와 접근을 제어합니다.

 

주의사항과 문제점

멀티쓰레딩은 강력한 기술이지만 주의해야 할 점과 문제점이 있습니다:

경쟁 조건(Race Condition): 여러 쓰레드가 동시에 공유 자원을 수정할 때, 예측 불가능한 결과가 발생할 수 있으므로 동기화를 신중하게 처리해야 합니다.

데드락(Deadlock): 쓰레드 간의 상호 대기로 인해 어떤 쓰레드도 진행하지 못하는 상태인 데드락을 피하기 위해 락을 적절히 관리해야 합니다.

성능 저하: 너무 많은 쓰레드를 생성하면 쓰레드 간의 경합과 오버헤드로 인해 성능이 저하될 수 있습니다. 따라서 최적의 쓰레드 수를 고려해야 합니다.

반응형

'프레임워크 > Spring' 카테고리의 다른 글

Spring MVC - Log 사용하기  (0) 2023.09.28
Spring MVC  (0) 2023.09.28
서블릿(Servlet)  (0) 2023.09.24
Mybatis  (0) 2020.01.14
AOP(3)  (0) 2020.01.13
profile

소소한개발팁

@개발자 뱅

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!