धाग्याचे प्राधान्यक्रम - १

"चला आपला धडा सुरू ठेवूया. थ्रेडची प्राधान्ये काय आहेत आणि त्यांची गरज का आहे?

"वास्तविक जगाच्या समस्यांमध्ये, वेगवेगळ्या धाग्यांद्वारे केल्या जाणार्‍या कामाचे महत्त्व मोठ्या प्रमाणात बदलू शकते. या प्रक्रियेवर नियंत्रण ठेवण्यासाठी थ्रेड प्रायोरिटीची संकल्पना तयार केली गेली. प्रत्येक थ्रेडला 1 ते 10 पर्यंतच्या संख्येने प्राधान्य दिले जाते."

"10 सर्वोच्च प्राधान्य आहे."

"1 सर्वात कमी आहे."

"कोणतेही प्राधान्य दिले नसल्यास, थ्रेडला प्राधान्य 5 (सामान्य) मिळेल."

थ्रेडच्या प्राधान्याचा त्याच्या कार्यावर लक्षणीय परिणाम होत नाही, परंतु त्याऐवजी शिफारसी जास्त असते. अनेक स्लीपिंग थ्रेड्स चालवायचे असल्यास, Java मशीन प्रथम उच्च प्राधान्याने थ्रेड सुरू करेल.

"जावा मशीन योग्य वाटेल तसे थ्रेड्स व्यवस्थापित करते. कमी प्राधान्य असलेले थ्रेड निष्क्रिय करण्यासाठी सोडले जाणार नाहीत. त्यांना इतरांपेक्षा कमी कार्यान्वित वेळ मिळेल, परंतु तरीही ते कार्यान्वित केले जातील."

"बहुतेक प्रकरणांमध्ये, थ्रेड नेहमी समान प्राधान्याने चालवले जातात. एक थ्रेड इतरांपेक्षा अधिक देण्याचा प्रयत्न अनेकदा एखाद्या प्रोग्राममधील वास्तुशास्त्रीय समस्यांचे संकेत असतो."

"अरे. आणि मी माझ्या धाग्यांना सर्वोच्च प्राधान्य देण्याचे स्वप्न पाहिले होते जेणेकरून ते 10 पट जास्त करतील."

"असे निष्पन्न झाले की येथील परिस्थिती अंतिम टप्प्यात आली आहे: उच्च प्राधान्य असलेला धागा अधिक कार्य करू शकतो आणि करेल, परंतु कदाचित नाही - कोणतीही हमी नाही."

"सांगा, मी धाग्याचा प्राधान्यक्रम कसा बदलू?"

"हे खूप सोपे आहे. थ्रेड क्लासमध्ये दोन पद्धती आहेत:"

पद्धत वर्णन
void setPriority(int newPriority)
नवीन प्राधान्यक्रम ठरवतो
int getPriority()
वर्तमान थ्रेड प्राधान्य मिळवते

"थ्रेड क्लासमध्ये देखील तीन स्थिरांक आहेत:"

सार्वजनिक अंतिम स्थिरांक MIN_PRIORITY = 1;

सार्वजनिक अंतिम स्थिर इंट NORM_PRIORITY = 5;

सार्वजनिक अंतिम स्थिरांक MAX_PRIORITY = 10;

"मला अंदाज लावू द्या. MIN_PRIORITY हे किमान प्राधान्य आहे, MAX_PRIORITY कमाल आहे आणि NORM_PRIORITY हे डीफॉल्ट प्राधान्य आहे?"

"होय, नक्की. तुम्ही कोड लिहू शकता जो सर्वोच्च थ्रेडला प्राधान्य देतो."

"इथे काही युक्ती आहे का? असे काहीतरी आहे?"

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

"बरोबर आहे. काहीही क्लिष्ट नाही ना?"

"हो. तुम्ही थ्रेड सुरू झाल्यानंतर प्राधान्यक्रम सेट/बदलू शकता का? किंवा ते सेटडेमनसारखे आहे, जिथे तुम्हाला थ्रेड सुरू होण्यापूर्वी मूल्य सेट करावे लागेल?"

"धागा सुरू केल्यानंतर प्राधान्यक्रम बदलता येतो. मी आधीच म्हटल्याप्रमाणे, यामुळे कोणतेही नाट्यमय बदल होत नाहीत."

"बरं, तो एक छोटासा पण मनोरंजक विषय होता. धन्यवाद, एली."