Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

मल्टीथ्रेडिंग में Java थ्रेड प्राथमिकता

परिचय

मल्टी-थ्रेडिंग की स्थिति में, एक थ्रेड शेड्यूलर थ्रेड्स को उनकी प्राथमिकता के आधार पर विशिष्ट प्रक्रियाओं को असाइन करता है। एक Java थ्रेड एक पूर्व-असाइन प्राथमिकता के साथ आता है। इसके अलावा, Java वर्चुअल मशीन थ्रेड्स को प्राथमिकता भी दे सकती है या प्रोग्रामर्स द्वारा स्पष्ट रूप से दी जा सकती है। थ्रेड की प्राथमिकता के लिए मानों की सीमा 1 और 10 (सम्मिलित) के बीच होती है। प्राथमिकता से जुड़े तीन स्टेटिक वेरिएबल हैं -

  • MAX_PRIORITY - एक थ्रेड की अधिकतम प्राथमिकता, जिसका डिफ़ॉल्ट मान 10 है।
  • NORM_PRIORITY - एक थ्रेड की डिफ़ॉल्ट प्राथमिकता, जिसका डिफ़ॉल्ट मान 5 है।
  • MIN_PRIORITY - एक थ्रेड की न्यूनतम प्राथमिकता, जिसका डिफ़ॉल्ट मान 1 है।

Java में 'getPriority()' मेथड इससे बंधे थ्रेड की प्राथमिकता को मान के रूप में वापस करने में मदद करता है।

'setPriority()' मेथड दिए गए थ्रेड की प्राथमिकता मान को बदलता है। यह IllegalArgumentException फेंकता है जब थ्रेड प्राथमिकता 1 से कम या 10 से अधिक होती है।

उदाहरण

import java.lang.*;
public class Demo extends Thread{
    public void run(){
        System.out.println("अब, रन मेथड के अंदर");
    }
    public static void main(String[] args){
        Demo myThr1 = new Demo();
        Demo myThr2 = new Demo();
        System.out.println("पहले थ्रेड की थ्रेड प्राथमिकता है: " + myThr1.getPriority());
        System.out.println("दूसरे थ्रेड की थ्रेड प्राथमिकता है: " + myThr2.getPriority());
        myThr1.setPriority(5);
        myThr2.setPriority(3);
        System.out.println("पहले थ्रेड की थ्रेड प्राथमिकता है: " + myThr1.getPriority());
        System.out.println("दूसरे थ्रेड की थ्रेड प्राथमिकता है: " + myThr2.getPriority());
        System.out.print(Thread.currentThread().getName());
        System.out.println("मेन थ्रेड की थ्रेड प्राथमिकता है: " + Thread.currentThread().getPriority());
        Thread.currentThread().setPriority(10);
        System.out.println("मेन थ्रेड की थ्रेड प्राथमिकता है: " + Thread.currentThread().getPriority());
    }
}

आउटपुट

पहले थ्रेड की थ्रेड प्राथमिकता है: 5
दूसरे थ्रेड की थ्रेड प्राथमिकता है: 5
पहले थ्रेड की थ्रेड प्राथमिकता है: 5
दूसरे थ्रेड की थ्रेड प्राथमिकता है: 3
मेन थ्रेड की थ्रेड प्राथमिकता है: 5
मेन थ्रेड की थ्रेड प्राथमिकता है: 10

Demo नाम की एक क्लास बेस क्लास Thread से इनहेरिट करती है। 'run' फ़ंक्शन परिभाषित किया गया है और एक प्रासंगिक संदेश परिभाषित किया गया है। मुख्य फ़ंक्शन में, Demo क्लास के दो इंस्टेंस बनाए जाते हैं और 'getPriority' फ़ंक्शन को कॉल करके उनकी प्राथमिकताएं पाई जाती हैं।

उन्हें कंसोल पर प्रिंट किया जाता है। अगला, Demo इंस्टेंस को 'setPriority' फ़ंक्शन का उपयोग करके प्राथमिकता असाइन की जाती है। आउटपुट कंसोल पर प्रदर्शित होता है। 'getName' फ़ंक्शन की मदद से थ्रेड्स के नाम स्क्रीन पर प्रिंट होते हैं।

  1. - Java में थ्रेड प्रायोरिटी का महत्व?

    मल्टी-थ्रेडेड एप्लिकेशन में, प्रत्येक थ्रेड को एक प्रायोरिटी असाइन की जाती है। प्रोसेसर को थ्रेड शेड्यूलर द्वारा थ्रेड की प्रायोरिटी के आधार पर असाइन किया जाता है यानी सबसे अधिक प्रायोरिटी वाले थ्रेड को प्रोसेसर पहले असाइन किया जाता है और इसी तरह। थ्रेड की डिफ़ॉल्ट प्रायोरिटी मान 5 के साथ होती है। ह

  1. - Java में थ्रेड को कैसे रोकें?

    जब भी हम Java में Thread क्लास के stop() मेथड को कॉल करके रनिंग स्टेट से थ्रेड को रोकना चाहते हैं। यह मेथड रनिंग थ्रेड के निष्पादन को रोकता है और इसे वेटिंग थ्रेड्स पूल से हटा देता है और गार्बेज कलेक्टेड होता है। जब थ्रेड अपने मेथड के अंत तक पहुंचता है तो यह स्वचालित रूप से डेड स्टेट में चला जाता है

  1. - जावा में यूजर थ्रेड और डेमन थ्रेड में अंतर?

    डेमन थ्रेड्स आमतौर पर यूजर थ्रेड्स के लिए सेवाएं करने के लिए उपयोग किए जाते हैं। एप्लिकेशन थ्रेड का main() मेथड एक यूजर थ्रेड (नॉन-डेमन थ्रेड) है। JVM तब तक समाप्त नहीं होता जब तक सभी यूजर थ्रेड (नॉन-डेमन) समाप्त नहीं हो जाते। हम setDaemon(true) को कॉल करके यूजर थ्रेड द्वारा बनाए गए थ्रेड को स्पष्ट