프로그래밍 언어/JAVA

스레드와 멀티태스킹

· 코딩마이데이

멀티태스킹

멀티태스킹(multitasking)이란 멀티(multi) + 태스킹(tasking)의 합성어로 다수의 작업을 동시에 처리하는 것을 말합니다.

 

멀티태스킹 프로그램

간단한 응용프로그램은 보통 하나의 작업(태스크)만 하는 경우가 대부분이지만, 큰 규모의 응용프로그램은 많은 경우 여러 작업(태스크)을 동시에 실행합니다.

멀티태스킹 소프트웨어 사례

 

스래드와 멀티태스크

컴퓨터의 스레드(thread)는 thread of control의 준말로서 프로그램 코드를 실행하는 하나의 실 혹은 작업입니다. 하나의 실로 하나의 바느질밖에 없듯이, 하나의 스레드로 하나의 작업밖에 처리할 수 없습니다.

스레드는 운영체제나 JVM에서 테스크(작업)를 실행하는 단위로서, 운영체제나 JVM에 의해 관리되는 단위입니다. JVM은 하나의 테스크(작업)를 실행하기 위해 하나의 스레드를 만들고, 스레드로 하여금 테스크 코드를 실행하도록 합니다.

스레드와 멀티스레딩 개념

 

테트리스 응용프로그램을 구성하는 멀티스레드

멀티테스킹과 멀티스레딩

멀티프로세싱(multi-processing)은 하나의 응용프로그램을 여러 개의 프로세스(process)를 구성하여 각 프로세스가 하나의 작업(태스크)을 처리하도록 하는 기법입니다. 각 프로세스는 고유한 메모리 영역을 보유하고 독립적으로 실행됩니다.

이런 문제점을 개선하기 위해 제안된 방법이 멀티스레딩(multi-threading)입니다.

멀티스레딩은 하나의 응용프로그램을 동시처리가 가능한 여러 작업(코드)으로 분할하고 작업의 개수만큼 스래드를 생성하여 각 스레드로  하여금 하나의 작업을 처리하도록 하는 기법입니다.  모든 스레드는 응용프로그램 내의 자원과 메모리공유하므로 통신에 따른 오버헤드가 작고, 스레드 사이의 문맥 교환 시 소요되는 작업량이 많아 문맥 교환이 빠른 장점이 있습니다. 윈도우, 리눅스 등 많은 운영체제들이 멀티프로세싱을 지원하고 있지만 멀티스레딩을 기본으로 하고 있습니다.

 

멀티스레딩 활용 분야

멀티스레딩은 응용프로그램이 다수의 스레드를 가지고 다수의 작업을 동시에 처리함으로써, 한 스레드가 대기하는 동안 다른 스레드를 실행하여 시간 지연을 줄이고 자원의 비효율적 사용을 개선합니다.

 

 

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

Thread 클래스를 상속받아 스레드 만들기  (1) 2025.08.10
자바의 멀티스레딩  (7) 2025.08.07
스윙의 페인팅 메커니즘  (2) 2025.08.02
클리핑(Clipping)  (3) 2025.07.30
이미지 그리기  (4) 2025.07.27