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

जावा में रन-टाइम स्टैक तंत्र

हर बार जावा में किसी प्रक्रिया या कोड या थ्रेड को चलाने की आवश्यकता होती है, एक रनटाइम स्टैक बनाया जाता है ताकि थ्रेड को निष्पादित करते समय किए गए कार्यों को संग्रहीत किया जा सके।

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

एक बार सभी कार्यों को कॉल करने के बाद, रनटाइम स्टैक खाली हो जाएगा। इसका मतलब है कि इसे मेमोरी से हटाने की जरूरत है।

इस समय, रनटाइम स्टैक नष्ट हो जाता है और फिर थ्रेड भी समाप्त हो जाता है।

एक बार थ्रेड पूरा हो जाने पर (स्वेच्छा से) या जबरदस्ती (असामान्य समाप्ति) थ्रेड की समाप्ति हो सकती है।

रनटाइम स्टैक में तत्वों के विनाश का क्रम रनटाइम कार्य में प्रविष्टियों के निर्माण के विपरीत क्रम है।

जब थ्रेड सामान्य रूप से संचालित होता है, और निष्पादन पूरा करता है, तो मुख्य फ़ंक्शन को कॉल किया जाता है और इसकी प्रविष्टि रनटाइम स्टैक में संग्रहीत की जाएगी। इसी तरह, अन्य कार्यों (यदि कोई हो) को बुलाया जाता है और उनकी प्रविष्टियां संग्रहीत की जाती हैं। जब कार्यों का निष्पादन पूरा हो जाता है, तो रनटाइम स्टैक से प्रविष्टियों को हटाने का समय आ जाता है। अंतिम कार्य जो निष्पादित किया गया था वह पहला है जिसकी प्रविष्टि हटा दी गई है।

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

उदाहरण

public class Demo{
   public static void main(String[] args){
      test();
   }
   public static void test(){
      test_2();
      System.out.println("This is a test method.");
   }
   public static void test_2(){
      System.out.println(45/0);
      System.out.println("This is a method that divides 10 by 0.");
   }
}

आउटपुट

Exception in thread "main" java.lang.ArithmeticException: / by zero
at Demo.test_2(Demo.java:14)
at Demo.test(Demo.java:9)
at Demo.main(Demo.java:5)

डेमो नामक एक वर्ग में मुख्य कार्य होता है जिसमें 'परीक्षण' फ़ंक्शन कहा जाता है। 'टेस्ट' फ़ंक्शन को परिभाषित किया गया है जिसमें 'test_2' फ़ंक्शन कहा जाता है। 'Test_2' नाम के एक फ़ंक्शन को परिभाषित किया जाता है जिसमें किसी संख्या को 0 से विभाजित करने का प्रयास किया जाता है। इसके परिणामस्वरूप एक अपवाद होता है जो कंसोल पर मुद्रित होता है। इसलिए, त्रुटि संदेश को प्रिंट करने के लिए नियंत्रण 'println' लाइन तक नहीं पहुंचता है।


  1. हम जावा में थ्रेड को कैसे रोक सकते हैं?

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

  1. जावा में उपयोगकर्ता थ्रेड बनाम डेमन थ्रेड?

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

  1. जावा में शामिल होने () विधि का महत्व?

    A शामिल हों () एक अंतिम . है थ्रेड . की विधि क्लास और इसका उपयोग किसी अन्य थ्रेड के निष्पादन के अंत में थ्रेड के निष्पादन की शुरुआत में शामिल होने के लिए किया जा सकता है ताकि एक थ्रेड तब तक चलना शुरू न हो जब तक कि कोई अन्य थ्रेड समाप्त न हो जाए। अगर शामिल हों () विधि को थ्रेड इंस्टेंस पर कॉल किया