스레드(Thread)
스레드는 경량 프로세스(Light-Weight)라고도 하며 하나의 프로세스 안에서 여러개의 흐름을 말합니다.
그 여러개의 흐름이 여러개의 실 가닥 같다고 하여 스레드라고 불리게 되었죠.

 

 

로세스란 실행중인 프로그램이고 운영체제에게 메모리를 할당받아 실행합니다.
윈도우의 작업 관리자를 보면 현재 kakaoTalk 라는 프로그램이 실행중입니다.
이것을 프로세스라고 하며 메모리를 78,124KB 할당받아 실행중인것을 알 수 있습니다.

 

 

 

 

그렇다면 왜 스레드가 필요한 것일까요??

예를 들어 메이플 스토리라는 게임이 있습니다.
이 게임은 사냥도 하면서 동시에 배경음악을 실행시키고 또 채팅까지 할 수 있습니다.
만약 스레드 없이 어느 한 시점에 한가지 흐름으로 즉 사냥만 또는 배경음악만 또는 채팅만 한다면 어떻게 될까요?

사용자는 그 게임을 하지 않겠죠.
그렇다면 방법은 메이플 사냥 프로그램, 메이플 배경음악 프로그램, 메이플 채팅 프로그램 세가지 프로그램을 개발 한 뒤
세 개의 프로세스를 동시에 실행(Multi Tasking)시켜야 할 것입니다.
그럼 개발도 힘들것이고 시스템 자원낭비도 엄청나겠죠?

그래서 자바에는 하나의 프로세스 안에서 동시에 여러개의 흐름을 가질 수 있게 멀티스레딩(Multi Threading)을 지원하는 것입니다.

스레드의 장단점
스레드를 이용하면 CPU, 메모리 같은 자원의 효율이 향상되고 개발이 용이할것입니다.
하지만 동시에 여러가지 흐름으로 인해 그만큼 생각해야 할 것도 많습니다.

흐름이 하나일 때에는 그 흐름에 대한 예외처리만 해주면 되지만 서로 연관된 기능을 하는 스레드들 중 하나에서 예외가 발생하면
다른 스레드까지 영향이 갈 수 있으므로 예외 처리에 더욱 신중해야 합니다.
또 여러 스레드에서 동시에 한 자원에 접근하여 발생하는 교착상태(deadlock) 같은 문제에도 주의하여 사용해야 합니다.

스레드의 개념에 대해서 알아봤으니 스레드 사용법은 다음 글에서 알아 보도록 하겠습니다.

 

 

관련글

[전산학개론] - 프로그램, 프로세스, 프로세서 차이 [1]

[전산학개론] - 프로그램, 프로세스, 프로세서 차이 [2]

 

 

 

 

 

 

블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,