수익률 함수
이 함수는 실행 시간이 너무 오래 걸리고 중요하지 않은 스레드보다 더 중요한 스레드가 먼저 실행되도록 합니다.
스레드가 java.lang.Thread.yield 메소드를 호출하면 스레드 스케줄러가 실행을 일시 중지한다는 표시입니다. 스레드 스케줄러는 이 표시를 수락하거나 무시하도록 선택합니다.
스레드가 'yield' 기능을 실행하면 스케줄러는 우선순위가 같거나 더 높은 스레드가 있는지 확인합니다. 그렇다면 현재 스레드가 실행 가능 또는 준비 상태로 이동되고 해당 스레드에 프로세서 리소스가 제공됩니다.
수익률 함수의 구문 -
public static native void yield()
예를 들어 보겠습니다 -
예시
import java.lang.*; class Demo extends Thread{ public void run(){ for (int i=0; i<3 ; i++) System.out.println("In control of " + Thread.currentThread().getName() + " thread"); } } public class Demo_one{ public static void main(String[]args){ Demo my_obj = new Demo(); my_obj.start(); for (int i=0; i<3; i++){ Thread.yield(); System.out.println("In control of " + Thread.currentThread().getName() + " thread"); } } }
출력
In control of main thread In control of main thread In control of main thread In control of Thread-0 thread In control of Thread-0 thread In control of Thread-0 thread
Demo라는 클래스는 Thread 클래스를 확장합니다. 여기에서 요소 집합을 반복하고 'getName' 함수를 사용하여 스레드의 이름을 가져오는 '실행' 함수가 정의됩니다. 'Demo_one'이라는 클래스는 새 인스턴스가 생성되고 'start' 함수를 사용하여 시작되는 메인 함수를 정의합니다. 여기에서도 요소가 반복되고 스레드에서 yield 함수가 호출됩니다.
-
스레드가 yield 메서드를 사용하여 실행을 완료하면 프로세서 리소스를 놓고 경쟁하는 스레드가 많이 있습니다. 어떤 스레드가 먼저 실행될지 지정할 방법이 없습니다.
-
스레드가 yield 메소드를 실행하면 Running 상태에서 Runnable 상태로 전환됩니다.
-
yield 방식은 플랫폼이 선점형 스케줄링을 지원하는 경우에만 사용할 수 있습니다.
-
스레드가 실행 중에 일시 중지되면 조만간 기회가 생길지 장담할 수 없으며 모두 스케줄링 알고리즘과 스레드 스케줄러에 따라 다릅니다.