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

জাভা কনকারেনসিতে CountDownLatch এবং CyclicBarrier-এর পার্থক্য


দইদুইই মাল্টিথ্রেডিং-এ সিনক্রোনাইজেশনের জন্য ব্যবহৃত হয়।

  • CountDownLatch: এক বা একাধিক থ্রেড অন্য থ্রেডগুলোর কাজ শেষ হওয়া পর্যন্ত অপেক্ষা করে। কাউন্ট শুধু কমানো যায় (countDown), রিসেট করা যায় না।
  • CyclicBarrier: একসাথে কিছু থ্রেড একটি ব্যারিয়ার পয়েন্টে পৌঁছাতে অপেক্ষা করে। ব্যারিয়ার পূরণ হলে অপশনাল Runnable এক্সিকিউট হয়। রিয়ুজযোগ্য (reset possible)।
ক্র. নংবিষয়CyclicBarrierCountDownLatch
১উদ্দেশ্যথ্রেডগুলো একসাথে ব্যারিয়ারে পৌঁছাবেথ্রেডগুলো অন্যের কাজ শেষ হওয়া পর্যন্ত অপেক্ষা করবে
২Runnable কনস্ট্রাক্টরেহ্যাঁনা
৩কাউন্ট টাইপথ্রেডের সংখ্যাটাস্কের সংখ্যা
৪রিসেট/অ্যাডভান্সনয় (await() ব্লক করে)হ্যাঁ (countDown() অ্যাডভান্স করে)
৫এক্সেপশন হ্যান্ডলিংএকটি থ্রেড ইন্টারাপ্ট হলে সব BrokenBarrierException পায়শুধু বর্তমান থ্রেড InterruptedException পায়

CyclicBarrier উদাহরণ

// ৫টি থ্রেড ব্যারিয়ারে পৌঁছালে Runnable এক্সিকিউট হবে
CyclicBarrier barrier = new CyclicBarrier(5, () -> System.out.println("All parties arrived!"));

CountDownLatch উদাহরণ

// ২টি টাস্ক শেষ হওয়া পর্যন্ত মেইন থ্রেড অপেক্ষা করবে
CountDownLatch latch = new CountDownLatch(2);
// প্রতিটি টাস্ক শেষে latch.countDown();
latch.await(); // মেইন থ্রেড ব্লক
System.out.println("Done");
  1. জাভাতে Exception এবং Error-এর পার্থক্য

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

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

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