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 . पर कुछ आकर्षित करने क