'가장 작은 처리 단위'라고 불리는 Thread는 수행해야 할 일부 작업이 할당된 가벼운 하위 프로세스입니다. 스레드는 할당된 동일한 메모리 슬롯을 공유하고 서로 독립적이므로 멀티태스킹을 촉진합니다. 그러나 여러 스레드가 공유 메모리 슬롯에서 실행되면 리소스에 대한 경쟁이 발생하게 됩니다. 이러한 경쟁을 피하여 높은 처리량을 달성하기 위해 스레드 우선 순위 지정 개념이 도입되었습니다. 동일한 시스템에서 여러 작업을 실행하는 경우 이는 큰 의미를 갖습니다. "스레드 스케줄러는 우선순위에 따라 실행 스레드를 할당하는 작업을 수행합니다."
무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
JVM(JAVA 가상 머신)은 기본적으로 또는 프로그래머가 명시적으로 스레드 우선 순위를 결정합니다. 우선순위 등급은 1에서 10 사이이며, 스레드에 가장 높은 우선순위를 부여하려는 경우 10이 할당됩니다. 컨텍스트 전환 변경은 우선순위 순서에 따라 스레드 1에서 스레드 2로 전환하는 데 도움이 됩니다.
참고: 두 개 이상의 스레드가 동일한 우선순위로 할당될 가능성이 있으며, 그 실행은 운영 체제에 따라 다릅니다. 예를 들어 Windows에서는 라운드 로빈 알고리즘을 사용하여 이 경우를 처리합니다.JAVA에 매크로 형태로 미리 저장된 세 가지 주요 변수가 아래에 설명되어 있습니다.
우선순위 가져오기 및 설정과 관련된 일부 기능은 다음과 같습니다.
다음은 Java 스레드 우선순위의 예입니다.
다음은 위에 이미 정의된 변수와 JAVA에서 사용할 수 있는 기성 함수를 사용하여 스레드 우선순위 개념을 보여주는 몇 가지 예입니다.
코드:
public class test extends Thread{ public void run (){ System.out.println ( "The name of thread running curremtly is :"+Thread.currentThread ().getName ()); System.out.println ( "The priority od thread running currently is:"+Thread.currentThread ().getPriority ()); } public static void main (String args[]){ test t1=new test (); test t2=new test (); test t3=new test (); t1.setPriority (Thread.MIN_PRIORITY); t2.setPriority (Thread.MAX_PRIORITY); t3.setPriority (Thread.NORM_PRIORITY); t1.start (); t2.start (); t3.start (); } }
출력:
아래는 사용자 정의 우선순위 정의 및 인쇄 예시입니다.
코드:
public class test2 extends Thread { public void run () { System.out.println ( " The control is under run function now..."); } public static void main (String args[]) { // Here we are creating threads using the constructors. test2 t1=new test2 (); test2 t2=new test2 (); // setpriority () function is used below along with the parameter to set the prioirity. t1.setPriority (2); t2.setPriority (9); // Here we are coding on how to display output strings. System.out.println ( " The priority assigned to thread t1 is: " + t1.getPriority ()); System.out.println ( "The priority assigned to thread t2 is: " + t2.getPriority ()); // the run () function is defined above will be called via start () function and print the strinf which is there in it. t1.start (); } }
출력:
참고: 우선순위는 엄격하게 1~10 범위에 속해야 합니다. 우선순위가 이 범위를 벗어나는 경우 컴파일러는 아래 오류를 발생시킵니다. setPriority() 함수를 사용하여 스레드 t2의 우선순위를 설정하는 동안 9 대신 13에 우선순위가 주어졌을 때 이 오류가 발생했습니다.예외:
"main" 스레드의 예외 java.lang.IllegalArgumentException
java.base/java.lang.Thread.setPriority(Thread.java:1141)
test2.main(test2.java:14)
아래 나열된 멀티스레딩 및 스레드에 우선순위 할당과 관련된 많은 이점이 있습니다.
이것은 동일한 시스템에서 여러 작업을 운영하는 데 널리 사용되며 효율적인 방법 중 하나입니다. 스레드가 메모리를 공유하므로 메모리 효율적인 방법이기도 합니다. 시스템에서 여러 스레드가 실행될 수 있지만 이로 인해 프로세서가 어떤 스레드를 먼저 선택할지 혼란스러울 수 있습니다. 이 문제는 스레드에 우선순위를 할당하여 해결되었습니다. 스레드는 완료되거나 더 높은 우선순위의 스레드에 의해 중단될 때까지 계속 실행됩니다. 이 기능은 운영 체제와 긴밀하게 작동합니다. 음악과 함께 인터넷 서핑과 함께 워드 문서를 준비하는 것은 멀티스레딩이라는 마법 같은 개념이 등장하기 전까지는 그리 효율적이지 않았습니다.
위 내용은 자바 스레드 우선순위의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!