না , আমরা 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() এ কল করার আগে আমাদের লকটি অর্জন করতে হবে পদ্ধতি এবং রান() ঘোষণা করুন পদ্ধতি সিঙ্ক্রোনাইজড।
আউটপুট
Exception in thread "Thread-0" java.lang.IllegalMonitorStateException at java.lang.Object.wait(Native Method) at ThreadStateTest.run(ThreadStateTest.java:4)