Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Độ ưu tiên luồng (Thread Priority) trong đa luồng Java

Trong tình huống đa luồng, bộ lập lịch luồng gán luồng cho các tiến trình cụ thể dựa trên độ ưu tiên của chúng. Luồng Java đi kèm với độ ưu tiên được gán trước. Ngoài ra, máy ảo Java cũng có thể gán độ ưu tiên cho luồng hoặc do lập trình viên chỉ định rõ ràng. Phạm vi giá trị cho độ ưu tiên luồng nằm giữa 1 và 10 (bao gồm cả hai). Ba biến tĩnh liên quan đến độ ưu tiên là:

  • MAX_PRIORITY - Độ ưu tiên tối đa của luồng, giá trị mặc định 10.

  • NORM_PRIORITY - Độ ưu tiên mặc định của luồng, giá trị mặc định 5.

  • MIN_PRIORITY - Độ ưu tiên tối thiểu của luồng, giá trị mặc định 1.

Phương thức getPriority() trong Java giúp trả về độ ưu tiên của luồng gán giá trị cho nó.

Phương thức setPriority() thay đổi giá trị độ ưu tiên của luồng cho trước. Nó ném IllegalArgumentException khi độ ưu tiên luồng nhỏ hơn 1 hoặc lớn hơn 10.

Ví dụ

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()); 
    } 
}

Kết quả

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

Một lớp tên Demo kế thừa từ lớp cơ sở Thread. Hàm 'run' được định nghĩa và thông báo liên quan được định nghĩa. Trong hàm main, hai thể hiện của lớp Demo được tạo và độ ưu tiên của chúng được tìm bằng cách gọi hàm 'getPriority'.

Chúng được in ra console. Tiếp theo, các thể hiện Demo được gán độ ưu tiên bằng hàm 'setPriority'. Đầu ra được hiển thị trên console. Tên các luồng được in ra màn hình với sự trợ giúp của hàm 'getName'.