스레드

in kr-dev •  2 years ago 

Thread란? 

하나의 프로세스 내부에서 독립적으로 실행되는 하나의 작업 단위를 말하며, 세부적으로는 운영체제에 의해 관리되는 하나의 작업 혹은 태스크를 의미합니다. 스레드와 태스크(혹은 작업)은 바꾸어 사용해도 무관합니다.

 

1. JVM에 의해 하나의 프로세스가 발생하고 main( ) 안의 실행문 들이 하나의 스레드입니다.

2. main( ) 이외의 또 다른 스레드를 만들려면 Thread 클래스를 상속하거나 Runnable 인터페이스를 구현합니다.

3. 다중 스레드 작업 시에는 각 스레드 끼리 정보를 주고받을 수 있어 처리 과정의 오류를 줄일 수 있습니다.

4. 프로세스끼리는 정보를 주고받을 수 없습니다.

 

 멀티스레딩이란? 

여러 스레드를 동시에 실행시키는 응용프로그램을 작성하는 기법을 말합니다.

 

장점

1. 메모리 공유로 인한 시스템 자원 소모가 줄어 듭니다.

2. 동시에 두가지 이상의 활동을 하는 것이 가능해집니다.

 

단점

1. 서로 자원을 소모하다가 충돌이 일어날 가능성이 존재합니다.

2. 코딩이 난해해져 버그생성확률이 높아집니다.

 

 Thread의 생성주기 

thread

Runnable 상태 : 쓰레드가 실행되기위한 준비 단계

Running 상태 : 스케줄러에 의해 선택된 쓰레드가 실행되는 단계

Blocked 상태 : 쓰레드가 작업을 완수하지 못하고 잠시 작업을 멈추는 단계

 

 스레드의 생명 주기 

1. Runnable (준비상태)

스레드가 실행되기 위한 준비단계입니다. CPU를 점유하고 있지않으며 실행(Running 상태)을 하기 위해 대기하고 있는 상태입니다. 코딩 상에서 start( ) 메소드를 호출하면 run( ) 메소드에 설정된 스레드가 Runnable 상태로 진입합니다. “Ready“ 상태라고도 합니다.

 

2. Running (실행상태)

CPU를 점유하여 실행하고 있는 상태이며 run() 메서드는 JVM만이 호출 가능합니다. Runnable(준비상태)에 있는 여러 스레드 중 우선 순위를 가진 스레드가 결정되면 JVM이 자동으로 run( ) 메소드를 호출하여 스레드가 Running 상태로 진입합니다.

 

3. Dead (종료상태)

Running 상태에서 스레드가 모두 실행되고 난 후 완료 상태입니다. “Done” 상태라고도 합니다.

 

4. Blocked (지연 상태)

CPU를 점유권을 상실한 상태입니다. 후에 특정 메서드를 실행시켜 Runnable(준비상태)로 전환합니다.

wait( ) 메소드에 의해 Blocked 상태가 된 스레드는 notify( ) 메소드가 호출되면 Runnable 상태로 갑니다. sleep(시간) 메소드에 의해 Blocked 상태가 된 스레드는 지정된 시간이 지나면 Runnable 상태로 갑니다.

출처 : https://coding-factory.tistory.com/279

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.