본문 바로가기
Language/Java

[Java] 스레드 Thread

Writer mintparc 2019. 10. 3.

 

프로그램 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에 의해서 이루어지기 때문에 개발자가 임의로 수정이 불가하다. 

댓글