थ्रेड प्राथमिकताएं - 1

"आइए अपना पाठ जारी रखें। थ्रेड प्राथमिकताएं क्या हैं और उनकी आवश्यकता क्यों है?

"वास्तविक दुनिया की समस्याओं में, विभिन्न थ्रेड्स द्वारा किए जा रहे कार्य का महत्व बहुत भिन्न हो सकता है। इस प्रक्रिया को नियंत्रित करने के लिए थ्रेड प्राथमिकता की अवधारणा बनाई गई थी। प्रत्येक थ्रेड में 1 से 10 तक की संख्या द्वारा दर्शाई गई प्राथमिकता होती है।"

"10 सर्वोच्च प्राथमिकता है।"

"1 सबसे कम है।"

"यदि कोई प्राथमिकता नहीं दी जाती है, तो थ्रेड को प्राथमिकता 5 (सामान्य) मिलती है।"

एक थ्रेड की प्राथमिकता उसके काम को महत्वपूर्ण रूप से प्रभावित नहीं करती है, बल्कि इसके बजाय एक अनुशंसा अधिक होती है। यदि कई स्लीपिंग थ्रेड्स हैं जिन्हें चलाने की आवश्यकता है, तो जावा मशीन पहले उच्च प्राथमिकता वाले थ्रेड्स को शुरू करेगी।

"जावा मशीन थ्रेड्स का प्रबंधन करती है क्योंकि यह फिट दिखती है। कम प्राथमिकता वाले थ्रेड्स को निष्क्रिय नहीं छोड़ा जाएगा। उन्हें बस दूसरों की तुलना में कम निष्पादन समय प्राप्त होगा, लेकिन वे अभी भी निष्पादित होंगे।"

"ज्यादातर मामलों में, थ्रेड्स को हमेशा एक ही प्राथमिकता के साथ निष्पादित किया जाता है। एक थ्रेड को दूसरों की तुलना में अधिक देने का प्रयास अक्सर एक प्रोग्राम में वास्तु संबंधी समस्याओं का संकेत होता है।"

"वाह। और मैंने पहले से ही अपने धागों को सर्वोच्च प्राथमिकता देने का सपना देखा था ताकि वे 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();

"यह सही है। कुछ भी जटिल नहीं है, है ना?"

"हाँ। क्या आप थ्रेड शुरू होने के बाद प्राथमिकता सेट/बदल सकते हैं? या यह सेटडेमन की तरह है, जहां आपको थ्रेड शुरू होने से पहले मान सेट करना होगा?"

"एक थ्रेड शुरू होने के बाद प्राथमिकता को बदला जा सकता है। जैसा कि मैंने पहले ही कहा है, इसका कोई नाटकीय परिवर्तन नहीं होता है।"

"ठीक है, वह एक छोटा लेकिन दिलचस्प विषय था। धन्यवाद, ऐली।"