본문 바로가기

카테고리 없음

Thread에 대하여

쓰레드란?

쓰레드는 위에서 설명한 프로세스 내에서 실행되는 세부 작업의 단위이다. 여러개의 쓰레드가 모여 하나의 프로세스를 구성하며, 이 하나의 프로세스를 구성하는 여러개의 쓰레드를 멀티쓰레드라고 부른다. 쓰레드는 한번에 하나씩 밖에 동작 할 수 없으며 어떤 쓰레드가 먼저 실행이 될지는 아무도 알 수 없다.

 

쓰레드의 생성 주기

Thread 생성 -> Runnable -> Running -> Dead

 

쓰레드의 동기화 (Synchronized)

하나의 메서드 또는 동작을 여러개의 쓰레드가 한번에 사용하게 되면 프로그램이 서버리는 DeadLock 현상이 발생 하는 경우가 있다. 이런 경우를 방지하기 위해 DeadLock이 발생할 수 있는 부분에 synchronized를 이용하여 쓰레드를 동기화 시켜준다.

 

하나의 프로세스 내부에서 독립적으로 실행되는 하나의 작업 단위를 말한다

- 프로세스는 실행을 위해 메모리로 적재된 하나의 프로그램을 말한다

 

하나의 프로세스 내부에서 스레드가 하나 일 땐 단일 쓰레드(Single Thread) 두개 이상일 땐 다중 쓰레드 (Multi Thread)라고 한다.

 

JAVA에서 스레드 처리의 우선 순위

- 발생 되는 모든 스레드에는 1~10가지의 우선순위가 정해지며, 우선순위가 낮은 스레드 보다 우선 순위가 높은 스레드가 CPU를 점유 시간이 길어진다

- 우선순위가 같은 스레드 끼리는 경쟁하듯 번갈아 CPu를 점유한다. 그러나 예외적으로 실행 구문이 짧은 스레드 경우에는 먼저 처리 될 수도 있다.

- 다음조건이 발생하면 현재 실행중인 스레드의 처리를 멈추고 다른 스레드를 처리한다

-- 더 높은 우선 순위를 가진 스레드가 실행되었을때 (자연적)

-- 실쟁중인 스레드에 할당된 시간이 완료되었을때 (자연적)

-- run() 메소드가 수행 완료되었을때(자연적)

-- Thread 클래스의 메소드 인 yield,sleep(),join() 등의 메소드가 호출 되었을때 (인위적)

 

스레드의 상태

- cpu를 점유하고 있지 않다

  cpu를 점유하여 실행하기 위해 대기하고 있는 상태이다. 즉 실행 이전의 상태이다.

  코딩 상에서 start() 메소드를 호출하면 run() 메소드에 설정된 스레드가 runnable 상태로 진입한다

  ready 상태라고도 한다

- run()은 JVM만이 호출 가능하다

  CPU를 점유하여 실행하고 있는 상태이다

  runnable에 있는 여러 스레드 중 우선 순위를 가진 스레드가 결정되면 JVM이 자동으로 run()메소드를 호출하여 스레드

  가 runnable 상태로 진입한다

 

 

 

http://blog.naver.com/PostView.nhn?blogId=crom77x&logNo=50046897200

 

쓰레드 란

쓰레드란? : 쓰레드를 이해하기전에 프로세스의 개념부터 설명하도록 하겠다. 우리가 OS에서 작업을 할 ...

blog.naver.com

- 프로세스와 같이 실행, 준비, 대기 등의 실행 상태를 가지며 실행 상태가 변할때마다 쓰레드 문맥교환(context switching)을 수행한다

 

- 각 쓰레드별로 자신만의 스택과 레지스터를 가진다

 

- 한 순간에 하나의 쓰레드만이 실행 가능하다

 

프로세스와 쓰레드의 차이

- 프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고 쓰레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다

 

https://goodgid.github.io/What-is-Thread/