কম্পিউটার টিউটোরিয়াল

জাভাতে লক অর্জন ছাড়া wait() মেথড কল করা যায় কিনা?


না, আমরা লক অর্জন ছাড়া wait() মেথড কল করতে পারি না। জাভাতে, একবার লক অর্জন করলে আমাদের সেই অবজেক্টের ওপর wait() মেথড (টাইমআউটসহ বা টাইমআউটসহ নয়) কল করতে হয়। যদি আমরা লক অর্জন ছাড়া wait() মেথড কল করার চেষ্টা করি, তবে এটি 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(); 
    } 
}

উপরের উদাহরণে, আমরা লক অর্জন ছাড়া wait() মেথড কল করার চেষ্টা করেছি তাই রানটাইমে IllegalMonitorStateException জেনারেট হয়েছে। সমস্যা সমাধান করতে, wait() মেথড কল করার আগে লক অর্জন করতে হবে এবং run() মেথড সিঙ্ক্রোনাইজড ঘোষণা করতে হবে।

আউটপুট

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

  1. জাভাতে pack() মেথড কখন ব্যবহার করবেন

  2. জাভাতে invokeLater() মেথড কল করার পদ্ধতি

  3. জাভাতে JPanel-এর paintComponent() মেথড কীভাবে বাস্তবায়ন করবেন?

  4. জাভাতে ফাইনাল মেথড ইনহেরিট করা যায় কি?