Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ลำดับความสำคัญของเธรด Java ในมัลติเธรด


ในสถานการณ์ของมัลติเธรด ตัวกำหนดเวลาเธรดจะกำหนดเธรดให้กับกระบวนการเฉพาะตามลำดับความสำคัญ เธรด Java มาพร้อมกับลำดับความสำคัญที่กำหนดไว้ล่วงหน้า นอกจากนี้ Java virtualmachine ยังสามารถกำหนดลำดับความสำคัญให้กับเธรดหรือกำหนดโดยโปรแกรมเมอร์ได้อย่างชัดเจน ช่วงของค่าสำหรับลำดับความสำคัญของเธรดอยู่ระหว่าง 1 ถึง 10 (รวม) ตัวแปรคงที่สามตัวที่เกี่ยวข้องกับลำดับความสำคัญคือ -

  • MAX_PRIORITY - ลำดับความสำคัญสูงสุดที่เธรดมี ซึ่งค่าเริ่มต้นคือ 10

  • NORM_PRIORITY - ลำดับความสำคัญเริ่มต้นที่เธรดมีซึ่งมีค่าเริ่มต้นคือ 5

  • MIN_PRIORITY - ลำดับความสำคัญขั้นต่ำที่เธรดมี ซึ่งค่าเริ่มต้นคือ 1

เมธอด 'getPriority()' ใน Java ช่วยในการคืนลำดับความสำคัญของเธรดที่ผูกกับค่านั้น

เมธอด 'setPriority()' จะเปลี่ยนค่าลำดับความสำคัญของเธรดที่กำหนด มันส่ง theIllegalArgumentException เมื่อลำดับความสำคัญของเธรดน้อยกว่า 1 หรือมากกว่า 10

ตัวอย่าง

import java.lang.*;
public class Demo extends Thread{
   public void run(){
      System.out.println("Now, inside the run method");
   }
   public static void main(String[]args){
      Demo my_thr_1 = new Demo();
      Demo my_thr_2 = new Demo();
      System.out.println("The thread priority of first thread is : " + my_thr_1.getPriority());
      System.out.println("The thread priority of first thread is : " +       my_thr_2.getPriority());
      my_thr_1.setPriority(5);
      my_thr_2.setPriority(3);
      System.out.println("The thread priority of first thread is : " +    my_thr_1.getPriority());
      System.out.println("The thread priority of first thread is : " + my_thr_2.getPriority());
      System.out.print(Thread.currentThread().getName());
      System.out.println("The thread priority of main thread is : " +
      Thread.currentThread().getPriority());
      Thread.currentThread().setPriority(10);
      System.out.println("The thread priority of main thread is : " +
      Thread.currentThread().getPriority());
   }
}

ผลลัพธ์

The thread priority of first thread is : 5
The thread priority of first thread is : 5
The thread priority of first thread is : 5
The thread priority of first thread is : 3
The thread priority of main thread is : 5
The thread priority of main thread is : 10

คลาสที่ชื่อ Demo สืบทอดมาจากคลาสพื้นฐาน Thread ฟังก์ชั่น 'run' ถูกกำหนดและกำหนดข้อความที่เกี่ยวข้อง ในฟังก์ชันหลัก มีการสร้างคลาสสาธิตสองอินสแตนซ์และพบลำดับความสำคัญได้โดยการเรียกใช้ฟังก์ชัน 'getPriority'

พวกเขาจะพิมพ์บนคอนโซล ถัดไป อินสแตนซ์การสาธิตจะถูกกำหนดลำดับความสำคัญโดยใช้ฟังก์ชัน 'setPriority' เอาต์พุตจะแสดงบนคอนโซล ชื่อของเธรดจะถูกพิมพ์บนหน้าจอด้วยความช่วยเหลือของฟังก์ชัน 'getName'