Java - Thread

yshjft·2023년 1월 12일
0

Java, OOP

목록 보기
26/27

쓰레드 구현과 실행

Thread 클래스 상속

class MyThread extends Thread {
	@Override
	public void run() {
    	
	}
}

public class Main {
	public static void main() {
    	MyThread mt = new MyThread();
        mt.start();
    }
}

Runnable 인터페이스 구현

class MyThread extends Runnable {
	@Override
	public void run() {
    	
	}
}

public class Main {
	public static void main() {
    	MyThread mt = new MyThread();
        Thread thread = new Thread(mt);
        thread.start();
    }
}

쓰레드 실행

  • thread.start()를 통해 쓰레드를 시작할 수 있다.
  • 하지만 바로 실행되는 것은 아니다. 일단 실행대기 상태에 있다가 자신의 차례가 되어야 실행된다.
    • 실행 순서는 스케줄러에 의해서 실행된다.

start() & run()

run()

  • run()은 새로운 쓰레드를 실행시키지 않고 단순히 메서드만 실행시킨다.

start()

  1. main()에서 쓰레드의 start()를 호출
  2. start()는 새로운 쓰레들르 생성, 쓰레드가 작업할 때 호출스택을 생성
  3. 새로 생성된 호출 스택에 run()이 호출되어
  4. 호출스택이 2개이므로 스케줄러가 정한 순서에 의해서 번갈아 가면서 실행

프로그램 종료

  • 메인 쓰레드가 종료되었다고 쓰레드가 종료 되는 것이 아니다.
  • 실행 중인 사용자 쓰레드가 하나도 없을 때 프로그램은 종료된다.

쓰레드의 우선순위

  • 쓰레드의 우선순위는 실행 순서를 결정하는 것이 아니라 할당 되는 실행시간을 결정한다. 우선순위가 높을 수록 할당 되는 시간이 길어진다.
  • 우선 순위 설정 : setPriority(원하는 우선 순위)
  • 우선 순위 조회 : getPriority(\)
    • 최대 우선 순위 : 10
    • 기본 우선 순위 : 5
    • 최소 우선 순위 : 1
profile
꾸준히 나아가자 🐢

0개의 댓글