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

জাভাতে wait() এবং sleep()-এর পার্থক্য

wait() - থ্রেড এই মনিটারের মালিকানা ছাড়ে এবং অন্য থ্রেড notify() বা notifyAll() কল না করার পর্যন্ত অপেক্ষা করে। তারপর মনিটারের মালিকানা পুনরায় পেয়ে এক্সিকিউশন শুরু করে।

sleep() - বর্তমানে রান হচ্ছে থ্রেড নির্দিষ্ট মিলিসেকেন্ডের জন্য স্লিপ করে (অস্থায়ীভাবে এক্সিকিউশন বন্ধ করে)। থ্রেড কোনো মনিটারের মালিকানা হারায় না। এটি করেন্ট থ্রেডকে নির্দিষ্ট সময়ের জন্য "Not Runnable" স্টেটে পাঠায়।

wait() এবং sleep()-এর মূল পার্থক্য

ক্রমিক নং বিষয় wait() sleep()
১ ক্লাস Object ক্লাসের মেথড Thread ক্লাসের মেথড
২ লক রিলিজ অবজেক্টের লক রিলিজ করে অবজেক্টের লক রিলিজ করে না
৩ কলিং কনটেক্সট অবজেক্টের ওপর কল করতে হয় (synchronized ব্লকে) থ্রেডের ওপর কল করতে হয়
৪ ওয়েক-আপ কন্ডিশন অবজেক্ট থেকে notify()/notifyAll() কল না হওয়া পর্যন্ত সময় শেষ না হওয়া বা interrupt() কল না হওয়া পর্যন্ত
৫ স্পurious wakeups প্রোগ্রামে স্পurious wakeups হতে পারে স্পurious wakeups হয় না

ব্যবহার উদাহরণ

synchronized(lockedObject) {
    while(condition == true) {
        lockedObject.wait(); // lockedObject লক রিলিজ করে
    }
    Thread.sleep(100); // করেন্ট থ্রেড স্লিপ করে
}

মূল নোট

  • wait() সবসময় synchronized ব্লক/মেথডের ভিতরে কল করতে হয়
  • sleep() যেকোনো জায়গা থেকে কল করা যায়
  • wait() ইন্টার-থ্রেড কমিউনিকেশনের জন্য, sleep() পজ/ডিলের জন্য
  1. জাভাতে Serialization এবং Externalization-এর পার্থক্য

  2. জাভাতে Iterator এবং Enumeration-এর পার্থক্য

  3. জাভাতে ArrayList এবং HashSet-এর পার্থক্য

  4. জাভাতে wait() এবং sleep() মেথডের পার্থক্য