ঘুম () এমন একটি পদ্ধতি যা প্রক্রিয়াটি কয়েক সেকেন্ড বা আপনি যে সময় চেয়েছিলেন তা ধরে রাখতে ব্যবহার করা হয় তবে অপেক্ষা () পদ্ধতির থ্রেড অপেক্ষার অবস্থায় চলে যায় এবং আমরা অবহিত () বা কল না করা পর্যন্ত এটি স্বয়ংক্রিয়ভাবে ফিরে আসবে না বা notifyAll ()।
প্রধান পার্থক্য যে অপেক্ষার () লক বা মনিটর প্রকাশ যখন ঘুম () অপেক্ষা করার সময় কোন লক বা মনিটর নয় রিলিজ করে। আন্তঃ-থ্রেড যোগাযোগের জন্য অপেক্ষা করুন যখন ঘুম কার্যকরভাবে কার্যকর করার সময় বিরতি প্রবর্তন করতে ব্যবহৃত হয়।
থ্রেড.স্লিপ () বর্তমান সময়ের থ্রেডকে কিছু সময়ের জন্য "চলমান নয়" অবস্থায় প্রেরণ করে। থ্রেড এটি অর্জন করা মনিটরের রাখে - যেমন থ্রেডটি বর্তমানে সিঙ্ক্রোনাইজড ব্লক বা পদ্ধতিতে থাকলে অন্য কোনও থ্রেড এই ব্লক বা পদ্ধতিতে প্রবেশ করতে পারে না। অন্য থ্রেড যদি t.interrupt () কে কল করে তবে এটি ঘুমের সুতার জাগ্রত হবে। নোট করুন যে ঘুম একটি স্থিতিশীল পদ্ধতি, যার অর্থ এটি সর্বদা বর্তমান থ্রেডকে প্রভাবিত করে (ঘুমন্ত পদ্ধতিটি যেটি কার্যকর করছে)। একটি সাধারণ ভুল হ'ল টি.স্লিপ () বলা যেখানে টি আলাদা থ্রেড হয়; তারপরেও এটি বর্তমান থ্রেডটি ঘুমাবে, টি থ্রেড নয়।
অবজেক্ট.ওয়েট () বর্তমান থ্রেডটিকে "চলমান নয়" অবস্থায় প্রেরণ করে ঘুমের মতো (), তবে একটি পাক দিয়ে। থ্রেড নয়, কোনও বস্তুর উপরে অপেক্ষা করা হয়; আমরা এই বস্তুকে "লক অবজেক্ট" বলি। লক.ওয়েট () বলা হওয়ার আগে, বর্তমান থ্রেডটি অবশ্যই লক অবজেক্টে সিঙ্ক্রোনাইজ করতে হবে; অপেক্ষা () তারপরে এই লকটি প্রকাশ করে এবং লকটির সাথে যুক্ত "অপেক্ষা তালিকায়" থ্রেড যুক্ত করে adds পরবর্তীতে, অন্য থ্রেড একই লক অবজেক্টে এবং কল লক.কনটিফাই () কল করতে পারে। এটি মূল, অপেক্ষার থ্রেডকে জাগায়। মূলত, অপেক্ষা () / বিজ্ঞপ্তি () ঘুমের মতো () / বিঘ্নিত (), কেবল সক্রিয় থ্রেডের স্লিপিং থ্রেডের জন্য সরাসরি পয়েন্টার প্রয়োজন হয় না, তবে কেবল ভাগ করা লক অবজেক্টে to
synchronized(LOCK) {
Thread.sleep(1000); // LOCK is held
}
synchronized(LOCK) {
LOCK.wait(); // LOCK is not held
}
উপরের সমস্ত বিষয়গুলিকে শ্রেণিবদ্ধ করা যাক:
Call on:
- অপেক্ষা (): একটি বস্তুর উপর কল; বর্তমান থ্রেডটি অবশ্যই লক অবজেক্টে সিঙ্ক্রোনাইজ করতে হবে।
- ঘুম (): কল একটি থ্রেড; সর্বদা বর্তমানে থ্রেড চালাচ্ছে।
Synchronized:
- অপেক্ষা (): যখন সিঙ্ক্রোনাইজ করা হয় একাধিক থ্রেড এক এক করে একই অবজেক্টে অ্যাক্সেস করে।
- ঘুম (): একত্রীকরণের জন্য একাধিক থ্রেডগুলি ঘুমানোর থ্রেডের ঘুমের জন্য অপেক্ষা করে।
Hold lock:
- অপেক্ষা (): অন্যান্য বস্তুগুলি কার্যকর করার সুযোগ পাওয়ার জন্য লকটি ছেড়ে দিন।
- ঘুম (): টাইমআউট নির্দিষ্ট করা বা কারও বাধা থাকলে কমপক্ষে t বার লক রাখুন।
Wake-up condition:
- অপেক্ষা (): অবধি কল থেকে বিজ্ঞপ্তি (), notifyAll () অবজেক্ট থেকে
- ঘুম (): কমপক্ষে সময় শেষ না হওয়া পর্যন্ত বা কল বিঘ্নিত কল ()।
Usage:
- ঘুম (): টাইম-সিঙ্ক্রোনাইজেশনের জন্য এবং;
- অপেক্ষা (): মাল্টি-থ্রেড-সিঙ্ক্রোনাইজেশনের জন্য।
সূত্র: পরিবর্তন sleep
এবংwait