जब भी प्रतीक्षा करें () किसी ऑब्जेक्ट पर विधि को कॉल किया जाता है, यह वर्तमान थ्रेड को तब तक प्रतीक्षा करने का कारण बनता है जब तक कि कोई अन्य थ्रेड सूचित() को आमंत्रित नहीं करता है। या सभी को सूचित करें () इस ऑब्जेक्ट के लिए विधि जबकि प्रतीक्षा करें (लंबा समय समाप्त) वर्तमान थ्रेड को तब तक प्रतीक्षा करने का कारण बनता है जब तक कि कोई अन्य थ्रेड सूचित () . को आमंत्रित नहीं करता है या सभी को सूचित करें () इस ऑब्जेक्ट के लिए विधियाँ, या एक निर्दिष्ट समयबाह्य समय बीत चुका है।
प्रतीक्षा करें ()
नीचे दिए गए कार्यक्रम में, जब प्रतीक्षा करें() किसी ऑब्जेक्ट पर कॉल किया जाता है, थ्रेड रनिंग से वेटिंग स्टेट तक . में प्रवेश करता है . यह सूचित करें () . को कॉल करने के लिए किसी अन्य थ्रेड की प्रतीक्षा करता है या सभी को सूचित करें () ताकि यह चलने योग्य स्थिति में प्रवेश कर सके, एक गतिरोध बन जाएगा।
उदाहरण
class MyRunnable implements Runnable { public void run() { synchronized(this) { System.out.println("In run() method"); try { this.wait(); System.out.println("Thread in waiting state, waiting for some other threads on same object to call notify() or notifyAll()"); } catch (InterruptedException ie) { ie.printStackTrace(); } } } } public class WaitMethodWithoutParameterTest { public static void main(String[] args) { MyRunnable myRunnable = new MyRunnable(); Thread thread = new Thread(myRunnable, "Thread-1"); thread.start(); } }
आउटपुट
In run() method
प्रतीक्षा करें(लंबी)
नीचे दिए गए कार्यक्रम में, जब प्रतीक्षा करें(1000) ऑब्जेक्ट पर कॉल किया जाता है, थ्रेड रनिंग से वेटिंग स्टेट में प्रवेश करता है, भले ही सूचित करें() या सभी को सूचित करें () टाइमआउट समय बीत जाने के बाद कॉल नहीं किया जाता है, थ्रेड रन करने योग्य स्थिति की प्रतीक्षा कर रहा है।
उदाहरण
class MyRunnable implements Runnable { public void run() { synchronized(this) { System.out.println("In run() method"); try { this.wait(1000); System.out.println("Thread in waiting state, waiting for some other threads on same object to call notify() or notifyAll()"); } catch (InterruptedException ie) { ie.printStackTrace(); } } } } public class WaitMethodWithParameterTest { public static void main(String[] args) { MyRunnable myRunnable = new MyRunnable(); Thread thread = new Thread(myRunnable, "Thread-1"); thread.start(); } }
आउटपुट
In run() method Thread in waiting state, waiting for some other threads on same object to call notify() or notifyAll()