Ưu tiên chủ đề - 1

"Hãy tiếp tục bài học của chúng ta. Ưu tiên luồng là gì và tại sao chúng lại cần thiết?

"Trong các vấn đề trong thế giới thực, tầm quan trọng của công việc được thực hiện bởi các luồng khác nhau có thể khác nhau rất nhiều. Khái niệm về mức độ ưu tiên của luồng được tạo ra để kiểm soát quá trình này. Mỗi luồng có mức độ ưu tiên được biểu thị bằng một số từ 1 đến 10."

"10 là ưu tiên cao nhất."

"1 là thấp nhất."

"Nếu không có mức độ ưu tiên nào, thì một chuỗi sẽ có mức độ ưu tiên 5 (bình thường)."

Mức độ ưu tiên của một luồng không ảnh hưởng đáng kể đến công việc của nó, mà thay vào đó là một đề xuất nhiều hơn. Nếu có một số luồng đang ngủ cần chạy, máy Java sẽ bắt đầu luồng có mức độ ưu tiên cao hơn trước.

"Máy Java quản lý các luồng khi nó thấy phù hợp. Các luồng có mức độ ưu tiên thấp sẽ không bị bỏ trống. Đơn giản là chúng sẽ nhận được ít thời gian thực thi hơn các luồng khác, nhưng chúng vẫn sẽ được thực thi."

"Trong hầu hết các trường hợp, các luồng luôn được thực thi với cùng mức độ ưu tiên. Nỗ lực cung cấp cho một luồng nhiều hơn các luồng khác thường là dấu hiệu của các vấn đề về kiến ​​trúc trong chương trình."

"Chà. Và tôi đã mơ ước được gán mức độ ưu tiên cao nhất cho các chủ đề của mình để chúng có thể làm được gấp 10 lần."

"Hóa ra là tình hình ở đây sắp kết thúc: một chuỗi có mức độ ưu tiên cao có thể và sẽ hoạt động hiệu quả hơn, nhưng có thể không—không có gì đảm bảo."

"Nói, làm cách nào để thay đổi mức độ ưu tiên của chuỗi?"

"Rất dễ. Lớp Thread có hai phương thức:"

Phương pháp Sự miêu tả
void setPriority(int newPriority)
Đặt mức độ ưu tiên mới
int getPriority()
Trả về mức độ ưu tiên của luồng hiện tại

"Lớp Thread cũng có ba hằng số:"

tĩnh cuối cùng công khai int MIN_PRIORITY = 1;

tĩnh cuối cùng công khai int NORM_PRIORITY = 5;

tĩnh cuối cùng công khai int MAX_PRIORITY = 10;

"Để tôi đoán. MIN_PRIORITY là mức ưu tiên tối thiểu, MAX_PRIORITY là mức tối đa và NORM_PRIORITY là mức ưu tiên mặc định?"

"Vâng, chính xác. Bạn có thể viết mã chỉ định mức độ ưu tiên cao nhất của luồng."

"Có mánh khóe nào ở đây không? Đại loại như thế này?"

Thread thread = new MyThread();
thread.setPriority(Thread. MAX_PRIORITY)
thread.start();

"Đúng vậy. Không có gì phức tạp phải không?"

"Có. Bạn có thể đặt/thay đổi mức độ ưu tiên sau khi chuỗi bắt đầu không? Hay giống như setDaemon, trong đó bạn phải đặt giá trị trước khi chuỗi bắt đầu?"

"Mức độ ưu tiên có thể được thay đổi sau khi một chủ đề được bắt đầu. Như tôi đã nói, điều này không dẫn đến bất kỳ thay đổi đáng kể nào."

"Chà, đó là một chủ đề nhỏ nhưng thú vị. Cảm ơn, Ellie."