1) 현재 실행 대기중인 동등한 우선순위 이상의 다른 스레드에게
실행기회를 제공한다.(양보)
2) 현재 실행중인 스레드의 상태를 Runnable상태로 바꾼다.
: Waiting이나 Block 상태로 바뀌지 않는다.
: Runnable -> Runnable (할당 cpu를 다른사람에게 준다라는 의미?)
3) yield()메서드를 실행한다고 해서 현재 실행중인 스레드가
곧바로 Runnable 상태로 전이된다고 확신할 수 없다.
T12_ThreadYieldTest
=> yield() 와 Thread.yield() 같다.
: Thread를 extends 해서 Thread 생략가능하다.
public class T12_ThreadYieldTest {
public static void main(String[] args) {
Thread th1 = new YieldThread1();
Thread th2 = new YieldThread2();
th1.start();
th2.start();
// 콘솔창에 YieldThread1이 양보했지만 양보할 수도 있고 안할 수도 있다.
}//main
}//class
양보 기능 테스트용 쓰레드 클래스
class YieldThread1 extends Thread{
@Override
public void run() {
for (int i = 0; i < 100; i++) { //for문 5바퀴 돌면서 i 찍는다
System.out.println("YieldThread1 : "+ i);
yield();
//양보하기 (static 메서드)
//=> Thread.yield() : 쓰레드 extends 해서 Thread. 생략가능
}
}
}
양보 기능 없는 쓰레드
class YieldThread2 extends Thread{
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("YieldThread2 : "+ i);
}
}
}