wait/notify কিউ থেকে BlockingQueue
হাতে লেখা প্রোডিউসার-কনজিউমার সমন্বয়কে BlockingQueue দিয়ে প্রতিস্থাপন করুন।
কোড তুলনা
✕ Manual wait and notify
synchronized (queue) {
while (queue.isEmpty()) {
queue.wait();
}
Job job = queue.removeFirst();
process(job);
}
✓ BlockingQueue
BlockingQueue<Job> queue = new LinkedBlockingQueue<>(); Job job = queue.take(); process(job);
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
নিরাপদ সমন্বয়
কিউ নিজেই লকিং এবং কন্ডিশন সিগন্যালিং পরিচালনা করে।
স্পষ্ট উদ্দেশ্য
put() এবং take() সরাসরি প্রোডিউসার-কনজিউমার আচরণ প্রকাশ করে।
বিল্ট-ইন নীতি
সীমিত ক্যাপাসিটি, ফেয়ারনেস, টাইমআউট বা নন-ব্লকিং অপারেশন বেছে নিন।
পুরনো পদ্ধতি
ম্যানুয়াল wait এবং notify
আধুনিক পদ্ধতি
BlockingQueue
JDK থেকে
5
কঠিনতা
মধ্যম
JDK সমর্থন
wait/notify কিউ থেকে BlockingQueue
উপলব্ধ
JDK 5 (2004) থেকে ব্যাপকভাবে উপলব্ধ
কীভাবে কাজ করে
সঠিক wait/notify কোডের জন্য একটি শেয়ার্ড মনিটর, কন্ডিশন লুপ, মিলিত নোটিফিকেশন এবং সতর্ক ইন্টারাপশন হ্যান্ডলিং প্রয়োজন। BlockingQueue এই নিয়মগুলোকে এনক্যাপসুলেট করে এবং প্রোডিউসার-কনজিউমার ওয়ার্কফ্লোর জন্য ব্লকিং, টাইমড এবং নন-ব্লকিং অপারেশন প্রদান করে। put() এবং take()-এর মতো কলগুলো এখনও ইন্টারাপ্ট করা যায়।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ