스레드는 순차프로그램과 유사하게 시작, 실행, 종료의 실행순서를 가진다.
# 스레드 객체 생성
Thread worker = new Thread();
# 스레드 동작 기술
public void run()
1. Thread 클래스 확장 2. Runnable 인터페이스 구현
# 스레드 시작
worker.start()
# Thread클래스 확장
run 메소드 작성하고 start 메소드로 실행 가능
class SimpleThread extends Thread {
public SimpleThread(String name) {
super(name);
}
public void run() {
System.out.println(getName() + " is now running.");
}
}
public class SimpleThreadTest {
public static void main(String[] args) {
SimpleThread t = new SimpleThread("SimpleThread");
System.out.println("Here : 1");
t.start();
System.out.println("Here : 2");
}
}
Thread상속받은 클래스의 객체를 생성하고 start 메소드로 스레드 실행가능
# Runnable인터페이스 구현
스레드 객체를 생성하고 나서야 start메소드로 스레드 실행 가능
class RunnableThread implements Runnable {
public void run() {
System.out.println("Implementation of Runnable");
}
}
public class ImplOfRunnable {
public static void main(String[] args) {
Thread t = new Thread (new RunnableThread());
System.out.println("Here : 1");
t.start();
System.out.println("Here : 2");
}
}
출력결과는 11_1과 같음
# Runnable -> Not Runnable
sleep호출
wait호출
입출력을 위해 블록됐을때
# Not Runnalbe -> Runnable
sleep시간경과
해당 입출력 완료됐을 때
# 스레드 스케줄링 *****중요*****
Runnable 상태에 있는 여러 스레드의 실행 순서를 제어하기 위해
고정 우선 순위 스케줄링 알고리즘
스레드를 생성시킨 스레드의 우선 순위 상속
# 스레드 우선순위
MIN_PRIORITY, MAX_PRIORITY
값이 클수록 높은 우선 순위
디폴트 우선 순위 : NORM_PRIORITY
# yield 메소드
다른 runnalbe 상태의 스레드가 실행될 수 있도록 현재 실행중인 스레드를 양보한다. 현재 실행중인 스레드는 중단시키고, 스케줄러가 우선순위가 가장 높은 스레드를 선택한다. 방금 중단된 스레드의 우선순위가 가장 높으면 그 스레드가 다시 실행될 수도 있다.
'전공 과목 이수2👨💻 > JAVA(공)' 카테고리의 다른 글
자바12장 Swing - 예제문제/연습문제 (0) | 2021.08.18 |
---|---|
자바 11장,8장(스레드) 예제/연습문제 (0) | 2021.06.14 |
자바 | 8장 swing연습문제 (0) | 2021.05.27 |
자바10, 11주차 | 9장 예외 (0) | 2021.05.18 |
자바|10주차 인터페이스 (0) | 2021.05.18 |
자바| 1장~6장실습 / 연습문제 (0) | 2021.04.28 |