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

क्या हम जावा में लॉक प्राप्त किए बिना प्रतीक्षा () विधि को कॉल कर सकते हैं?

नहीं , हम प्रतीक्षा() . को कॉल नहीं कर सकते विधि ताला प्राप्त किए बिना . जावा में, एक बार लॉक प्राप्त कर लेने के बाद हमें प्रतीक्षा() विधि ( . को कॉल करने की आवश्यकता होती है टाइमआउट के साथ या बिना टाइमआउट के) उस ऑब्जेक्ट पर। अगर हम प्रतीक्षा() . को कॉल करने का प्रयास कर रहे हैं विधि लॉक प्राप्त किए बिना, यह java.lang.IllegalMonitorStateException को फेंक सकता है ।

उदाहरण

public class ThreadStateTest extends Thread {
   public void run() {
      try {
         wait(1000);
      } catch(InterruptedException ie) {
         ie.printStackTrace();
      }
   }
   public static void main(String[] s) {
      ThreadStateTest test = new ThreadStateTest();
      test.start();
   }
}

उपरोक्त उदाहरण में, हमें प्रतीक्षा() call को कॉल करने की आवश्यकता है लॉक प्राप्त किए बिना विधि इसलिए यह एक IllegalMonitorStateException . उत्पन्न करता है रनटाइम पर। समस्या को ठीक करने के लिए, हमें प्रतीक्षा() . को कॉल करने से पहले लॉक प्राप्त करना होगा विधि और घोषित करें रन() विधि सिंक्रनाइज़ की गई।

आउटपुट

Exception in thread "Thread-0" java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at ThreadStateTest.run(ThreadStateTest.java:4)

  1. हम जावा में पैक () विधि का उपयोग कब कर सकते हैं?

    द पैक() विधि विंडो . में परिभाषित है जावा में वर्ग और यह फ्रेम को आकार देता है ताकि इसकी सभी सामग्री उनके पसंदीदा आकार पर या उससे ऊपर हो। पैक() . का एक विकल्प विधि setSize() . को कॉल करके स्पष्ट रूप से एक फ्रेम आकार स्थापित करना है या सेटबाउंड्स () तरीके। सामान्य तौर पर, पैक () . का उपयोग करते हु

  1. हम जावा में इनवोकलेटर () विधि को कैसे कॉल कर सकते हैं?

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

  1. हम जावा में जेपीनल की पेंटकंपोनेंट () विधि को कैसे कार्यान्वित कर सकते हैं?

    A JPanel एक हल्का कंटेनर है और यह एक अदृश्य . है घटक जावा में। JPanel का डिफ़ॉल्ट लेआउट FlowLayout है . JPanel बनने के बाद, अन्य घटकों को JPanel . में जोड़ा जा सकता है इसके जोड़ें () . पर कॉल करके वस्तु विधि कंटेनर . से विरासत में मिली है कक्षा। paintComponent() JPanel . पर कुछ आकर्षित करने क