티스토리 뷰

반응형

1. 프로세스와 스레드

  - 프로세스

운영체제에서는 실행 중인 하나의 애플리케이션을 프로세스하고 부름

사용자가 어플리케이션을 실행하면 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는 과정을 프로세스하고 함.

 

 

 

  - 스레드

어플리케이션 내부에서의 코드 실행의 과정 혹은 흐름을 스레드 하고 하며 그 흐름이 2개 이상이라면 멀티(Multi) 스레드 라고 한다.

 

두가지 이상의 작업을 동시에 처리하는 과정(멀티 테스킹)에서 cpu 및 메모리 자원을 적절히 할당해 주고 병렬로 실행하는 작업이 가능하지만 멀티 테스킹이 반드시 멀티 프로레스를 뜻하지는 않는다. 하나의 프로세스 에서도 멀티 테스킹 과정이 이루어 질 수 있는데  그 과정이 가능한 것은 멀티 스레드가 가능하기 때문이다. 

 

멀티 스레드는 하나의 파이르 처럼 운영되어 서로 다른 프로레스에 영향을 주지 않는다.

자바 애플리케이션은 메인 스레드 main()이 실행되면서 시작된다. 

 

예)

 

 

일반적인 외부 클래스를 호출하여 사용하는 경우 하나의 run() 메소드가 완료된후 다음 작업으로 이어나가게 된다.

 

t1.run()   ->   t2.run() 

 

그러나 Thread클래스의 start()메소드를 사용할 경우 병렬 처리로 작업을 수행하게 된다. (Thread작업을 수행할 클래스는 Thread 클래스를 상속(extend) 받아야한다.

 

 

2. 동시성 / 병렬성

스레드는 동시성 또는 병렬성으로 실행된다.

- 동시성: 멀티작업을 위해 하나으 코어에서 멀티 스레드가 반걸아 가며 실행 과정

- 병렬성: 멀티 작업을 위해 멀티 코어에서 개별 스레드를 동시에 실행하는 과정

 

스케쥴링: 

만일 스레드의 개수가 코어의 수 보다 많을 경우 스레드를 어떤 순서에 의해 동시성으로 실행할 것인가를 결정

 

스케줄링은 두가지 방법 우선순위 방법과 순환할당 방법이 있다.

- 순환할당: 시간 할당량을 정하여 하나의 스레드를 정해진 시간만큼 실행하고 다시 다른 스레드를 싱행하는 방식

- 우선순위: 하나의 스레드 객체에 우선 순위 번호를 부여하는 방식 (개발자가 우선 순위를 정할 수 있음)

 

우선순위 매게 값은 1~ 10 까지 부여가 가능하며 10이 우선순위가 가장 높다.

thread.setPriority(우선순위);

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함