না , আমরা 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)