"Mari kita lanjutkan pelajaran kita. Apa itu prioritas utas dan mengapa itu dibutuhkan?
"Dalam masalah dunia nyata, pentingnya pekerjaan yang dilakukan oleh utas yang berbeda dapat sangat bervariasi. Konsep prioritas utas dibuat untuk mengontrol proses ini. Setiap utas memiliki prioritas yang diwakili oleh angka dari 1 hingga 10."
"10 adalah prioritas tertinggi."
"1 adalah yang terendah."
"Jika tidak ada prioritas yang diberikan, maka utas mendapatkan prioritas 5 (normal)."
Prioritas utas tidak memengaruhi pekerjaannya secara signifikan, tetapi lebih merupakan rekomendasi. Jika ada beberapa utas tidur yang perlu dijalankan, mesin Java akan memulai utas dengan prioritas lebih tinggi terlebih dahulu.
"Mesin Java mengelola utas sesuai keinginan. Utas dengan prioritas rendah tidak akan dibiarkan menganggur. Mereka hanya akan menerima waktu eksekusi lebih sedikit daripada yang lain, tetapi masih akan dieksekusi."
"Dalam kebanyakan kasus, utas selalu dijalankan dengan prioritas yang sama. Upaya untuk memberikan satu utas lebih banyak dari yang lain seringkali merupakan indikasi masalah arsitektural dalam suatu program."
"Wah. Dan saya sudah bermimpi untuk memberikan prioritas tertinggi pada utas saya sehingga mereka akan melakukannya 10 kali lebih banyak."
"Ternyata situasi di sini hampir selesai: utas dengan prioritas tinggi dapat dan akan bekerja lebih banyak, tetapi mungkin tidak—tidak ada jaminan."
"Katakan, bagaimana cara mengubah prioritas utas?"
"Sangat mudah. Kelas Thread memiliki dua metode:"
metode | Keterangan |
---|---|
|
Menetapkan prioritas baru |
|
Mengembalikan prioritas utas saat ini |
"Kelas Thread juga memiliki tiga konstanta:"
int statis publik akhir MIN_PRIORITY = 1;
int statis publik akhir NORM_PRIORITY = 5;
int statis akhir publik MAX_PRIORITY = 10;
"Biar saya tebak. MIN_PRIORITY adalah prioritas minimum, MAX_PRIORITY adalah maksimum, dan NORM_PRIORITY adalah prioritas default?"
"Ya, tepat. Anda dapat menulis kode yang menetapkan prioritas utas tertinggi."
"Apakah ada trik di sini? Sesuatu seperti ini?"
Thread thread = new MyThread();
thread.setPriority(Thread. MAX_PRIORITY)
thread.start();
"Itu benar. Tidak ada yang rumit, kan?"
"Ya. Bisakah Anda mengatur/mengubah prioritas setelah utas dimulai? Atau seperti setDaemon, di mana Anda harus menetapkan nilai sebelum utas dimulai?"
"Prioritas dapat diubah setelah rangkaian dimulai. Seperti yang sudah saya katakan, ini tidak menghasilkan perubahan yang dramatis."
"Yah, itu topik kecil tapi menarik. Terima kasih, Ellie."
GO TO FULL VERSION