
"เรามาเริ่มบทเรียนกันต่อ อะไรคือลำดับความสำคัญของเธรดและเหตุใดจึงจำเป็น
"ในปัญหาในโลกแห่งความเป็นจริง ความสำคัญของงานที่ดำเนินการโดยเธรดที่แตกต่างกันอาจแตกต่างกันอย่างมาก แนวคิดของลำดับความสำคัญของเธรดถูกสร้างขึ้นเพื่อควบคุมกระบวนการนี้ แต่ละเธรดมีลำดับความสำคัญแทนด้วยตัวเลขตั้งแต่ 1 ถึง 10"
"10 คือลำดับความสำคัญสูงสุด"
"1 คือค่าต่ำสุด"
"หากไม่มีการกำหนดลำดับความสำคัญ เธรดจะได้รับลำดับความสำคัญ 5 (ปกติ)"
ลำดับความสำคัญของเธรดไม่ส่งผลกระทบต่องานอย่างมีนัยสำคัญ แต่เป็นคำแนะนำมากกว่า หากมีหลายเธรดที่ต้องรัน เครื่อง Java จะเริ่มต้นเธรดที่มีลำดับความสำคัญสูงกว่าก่อน
"เครื่อง Java จัดการเธรดตามที่เห็นสมควร เธรดที่มีลำดับความสำคัญต่ำจะไม่ถูกปล่อยให้ว่าง พวกเขาจะได้รับเวลาดำเนินการน้อยกว่าเธรดอื่นๆ แต่จะยังคงถูกดำเนินการ"
"ในกรณีส่วนใหญ่ เธรดจะถูกดำเนินการด้วยลำดับความสำคัญเดียวกันเสมอ การพยายามให้หนึ่งเธรดมากกว่าเธรดอื่นๆ มักจะบ่งชี้ถึงปัญหาทางสถาปัตยกรรมในโปรแกรม"
"โอ้โห และฉันเคยฝันว่าจะจัดลำดับความสำคัญสูงสุดให้กับเธรดของฉัน เพื่อให้พวกเขาทำมากกว่า 10 เท่า"
"ปรากฎว่าสถานการณ์ที่นี่ใกล้จะจบลงแล้ว: เธรดที่มีลำดับความสำคัญสูงสามารถและจะทำงานได้มากขึ้น แต่อาจจะไม่ - ไม่มีการรับประกัน"
"พูดว่า ฉันจะเปลี่ยนลำดับความสำคัญของเธรดได้อย่างไร"
"มันง่ายมาก คลาสเธรดมีสองวิธี:"
วิธี | คำอธิบาย |
---|---|
|
กำหนดลำดับความสำคัญใหม่ |
|
ส่งกลับลำดับความสำคัญของเธรดปัจจุบัน |
"คลาสเธรดมีค่าคงที่สามค่า:"
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 ที่คุณต้องตั้งค่าก่อนที่เธรดจะเริ่มต้น"
"ลำดับความสำคัญสามารถเปลี่ยนแปลงได้หลังจากเธรดเริ่มต้น ดังที่ฉันได้กล่าวไปแล้ว สิ่งนี้ไม่ได้ส่งผลให้เกิดการเปลี่ยนแปลงอย่างมาก"
"อืม นั่นเป็นหัวข้อเล็กๆ แต่น่าสนใจ ขอบคุณ เอลลี่"
GO TO FULL VERSION