ลำดับความสำคัญของเธรด - 1

"เรามาเริ่มบทเรียนกันต่อ อะไรคือลำดับความสำคัญของเธรดและเหตุใดจึงจำเป็น

"ในปัญหาในโลกแห่งความเป็นจริง ความสำคัญของงานที่ดำเนินการโดยเธรดที่แตกต่างกันอาจแตกต่างกันอย่างมาก แนวคิดของลำดับความสำคัญของเธรดถูกสร้างขึ้นเพื่อควบคุมกระบวนการนี้ แต่ละเธรดมีลำดับความสำคัญแทนด้วยตัวเลขตั้งแต่ 1 ถึง 10"

"10 คือลำดับความสำคัญสูงสุด"

"1 คือค่าต่ำสุด"

"หากไม่มีการกำหนดลำดับความสำคัญ เธรดจะได้รับลำดับความสำคัญ 5 (ปกติ)"

ลำดับความสำคัญของเธรดไม่ส่งผลกระทบต่องานอย่างมีนัยสำคัญ แต่เป็นคำแนะนำมากกว่า หากมีหลายเธรดที่ต้องรัน เครื่อง Java จะเริ่มต้นเธรดที่มีลำดับความสำคัญสูงกว่าก่อน

"เครื่อง Java จัดการเธรดตามที่เห็นสมควร เธรดที่มีลำดับความสำคัญต่ำจะไม่ถูกปล่อยให้ว่าง พวกเขาจะได้รับเวลาดำเนินการน้อยกว่าเธรดอื่นๆ แต่จะยังคงถูกดำเนินการ"

"ในกรณีส่วนใหญ่ เธรดจะถูกดำเนินการด้วยลำดับความสำคัญเดียวกันเสมอ การพยายามให้หนึ่งเธรดมากกว่าเธรดอื่นๆ มักจะบ่งชี้ถึงปัญหาทางสถาปัตยกรรมในโปรแกรม"

"โอ้โห และฉันเคยฝันว่าจะจัดลำดับความสำคัญสูงสุดให้กับเธรดของฉัน เพื่อให้พวกเขาทำมากกว่า 10 เท่า"

"ปรากฎว่าสถานการณ์ที่นี่ใกล้จะจบลงแล้ว: เธรดที่มีลำดับความสำคัญสูงสามารถและจะทำงานได้มากขึ้น แต่อาจจะไม่ - ไม่มีการรับประกัน"

"พูดว่า ฉันจะเปลี่ยนลำดับความสำคัญของเธรดได้อย่างไร"

"มันง่ายมาก คลาสเธรดมีสองวิธี:"

วิธี คำอธิบาย
void setPriority(int newPriority)
กำหนดลำดับความสำคัญใหม่
int getPriority()
ส่งกลับลำดับความสำคัญของเธรดปัจจุบัน

"คลาสเธรดมีค่าคงที่สามค่า:"

int คงที่สุดท้ายสาธารณะ MIN_PRIORITY = 1;

int คงที่สุดท้ายสาธารณะ NORM_PRIORITY = 5;

int คงที่สุดท้ายสาธารณะ MAX_PRIORITY = 10;

"ให้ฉันเดา MIN_PRIORITY คือลำดับความสำคัญต่ำสุด MAX_PRIORITY คือสูงสุด และ NORM_PRIORITY คือลำดับความสำคัญเริ่มต้น"

"ใช่แล้ว คุณสามารถเขียนโค้ดที่กำหนดลำดับความสำคัญของเธรดสูงสุดได้"

“ที่นี่มีเคล็ดลับอะไรไหม?

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

“ถูกต้อง ไม่มีอะไรซับซ้อนใช่ไหม?”

"ใช่ คุณสามารถตั้งค่า/เปลี่ยนลำดับความสำคัญหลังจากเธรดเริ่มต้นได้หรือไม่ หรือเป็นเหมือน setDaemon ที่คุณต้องตั้งค่าก่อนที่เธรดจะเริ่มต้น"

"ลำดับความสำคัญสามารถเปลี่ยนแปลงได้หลังจากเธรดเริ่มต้น ดังที่ฉันได้กล่าวไปแล้ว สิ่งนี้ไม่ได้ส่งผลให้เกิดการเปลี่ยนแปลงอย่างมาก"

"อืม นั่นเป็นหัวข้อเล็กๆ แต่น่าสนใจ ขอบคุณ เอลลี่"