프로그램 Program
- 실행될 수 있는 파일
- . exe
프로세스 Process
- 실행되고 있는 상태
- 응용프로그램 단위로 실행되는 모듈
스레드 Thread
- 작업 단위
- 하나의 프로세스에서 여러 개의 기능 단위로 실행되는 흐름의 단위
- 스레드는 사전적 의미로 한 가닥의 실이라는 뜻이다. 한 가지 작업을 실행하기 위해 순차적으로 실행할 코드를 실처럼 이어 놓았다고 해서 유래된 이름이다.
스레드 생성 방법 1 : extends Thread
- 스레드의 기능을 여러 개 사용할 때 쓴다. (read, sleep, join, yield 등의 기능)
run ( )
메소드를 오버라이딩 한다.- 작업 스레드가 실행할 작업을 Runnable 로 만들지 않고, Thread의 하위 클래스로 작업 스레드를 정의하면서 작업내용을 포함시킬 수 있다.
public class MyThread extends Thread {
@Override
public void run() {
// 스레드가 실행할 코드
}
}
MyThread thread = new MyThread();
스레드 생성 방법 2 : implements Runnable
- 단순히 thread 화 할 때 사용한다.
- 구현 메소드가 run ( ) 하나이다.
run ( )
메소드를 오버라이딩 한다.- 작업내용을 가지고 있는 객체일 뿐 실제 스레드가 아니기 때문에, 구현 객체 생성 후 이 것을 매개 값으로 해서 스레드 생성자를 호출해야 비로소 작업 스레드가 생성된다.
public class MyThread implements Runnable {
@Override
public void run() {
// 스레드가 실행할 코드
}
}
Thread thread01 = new Thread(new MyThread());
스레드 스케줄링 Thread Scheduling : 우선순위
- 우선순위 값에 따라 스레드가 얻는 실행시간이 달라진다.
- 스레드가 수행하는 작업의 중요도에 따라 우선순위를 지정하여 특정 스레드가 더 많은 작업 시간을 갖도록 한다.
MIN PRIORITY = 1
MAX PRIORITY = 10
- 예를 들어 채팅 기능과 파일 전송 기능을 가진 메신저 프로그램이 있다. 우선순위가 정해져 있지 않다면 파일 전송을 하는 동안 채팅이 동작하지 않거나 느려진다면 사용자는 불편함을 느낄 것이다. 따라서 우선순위를 지정해주어서 특정 스레드가 더 많은 작업 시간을 갖게 해주어야 한다.
스레드 스케줄링 Thread Scheduling : 순환 할당 (Round - Robin)
- 스레드가 사용할 시간 할당량의 시간만큼 스레드를 실행시키고 또 다른 스레드를 실행한다.
- JVM에 의해서 이루어지기 때문에 개발자가 임의로 수정이 불가하다.
댓글