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

ট্রেডিশনাল কলেকশন এবং কনকারেন্ট কলেকশনের পার্থক্য

জাভাতে কলেকশন হলো সবচেয়ে গুরুত্বপূর্ণ কনসেপ্টগুলোর একটি, যা Java-কে নিজে একটি শক্তিশালী ল্যাঙ্গুয়েজ বানায়। কলেকশন সাপোর্টের কারণে Java যেকোনো ধরনের ডেটা সুবিধাজনক ও কার্যকরভাবে হ্যান্ডেল করতে পারে এবং CRUD অপারেশনগুলো স্মুথলি সম্পাদন করতে পারে।

কিন্তু মাল্টি-থ্রেডিং এনভায়রনমেন্টে কলেকশন এক্সপোজ হওয়ার সাথে সাথে এর পারফরম্যান্স কিছুটা ডিগ্রেড হয়, কারণ ট্রেডিশনাল কলেকশনগুলো মাল্টি-থ্রেডিং এনভায়রনমেন্ট সাপোর্ট করতে সক্ষম নয়। এই সীমাবদ্ধতা দূর করতে Java কনকারেন্ট কলেকশন চালু করে, যা শুধু মাল্টি-থ্রেডিং সীমাবদ্ধতা দূর করে না বরং একাধিক থ্রেডের সাথে ডেটা হ্যান্ডলিং-এ Java-এর পারফরম্যান্সও বাড়ায়।

ট্রেডিশনাল কলেকশন এবং কনকারেন্ট কলেকশনের মধ্যে গুরুত্বপূর্ণ পার্থক্য

ক্র. নং কী ট্রেডিশনাল কলেকশন কনকারেন্ট কলেকশন
১ থ্রেড সেফটি (Thread Safety) Java Collections-এর ক্লাসিক ক্লাসগুলো (ArrayList, LinkedList, HashMap ইত্যাদি) অধিকাংশই নন-সিঙ্ক্রোনাইজড এবং মাল্টি-থ্রেডিং এনভায়রনমেন্টে থ্রেড-সেফ নয়। Java কনকারেন্ট কলেকশনে সেম ক্লাসগুলো সিঙ্ক্রোনাইজেশন ইমপ্লিমেন্ট করে প্রদান করে, যা এগুলোকে সিঙ্ক্রোনাইজড এবং থ্রেড-সেফ করে তোলে।
২ লকিং মেকানিজম (Locking Mechanism) ট্রেডিশনাল কলেকশনে কিছু সিঙ্ক্রোনাইজড ক্লাস আছে (যেমন Vector, Stack) কিন্তু এগুলো পুরো কলেকশনের ওপর লক দেয়, যা পারফরম্যান্স ও এক্সিকিউশন স্পিড কমিয়ে দেয়। কনকারেন্ট কলেকশন পার্শিয়াল লকিং (partial locking) কনসেপ্ট আনে, যেখানে মাল্টি-থ্রেডিং এনভায়রনমেন্টে কলেকশনের শুধু নির্দিষ্ট অংশ লক হয়, ফলে পারফরম্যান্স ও স্পিড বাড়ে।
৩ রানটাইম এক্সেপশন (Runtime Exception) ট্রেডিশনাল কলেকশনে যদি ইটারেশন চলাকালীন আলাদা থ্রেড থেকে কলেকশন মডিফাই করা হয়, তবে ConcurrentModificationException ফেলে। কনকারেন্ট কলেকশনে এমন এক্সেপশন আসে না; ইটারেশন চলাকালীন কলেকশন মডিফাই করা যায়।
৪ वरीয়তা (Preference) উপরোক্ত কারণগুলো থেকে ট্রেডিশনাল কলেকশন মাল্টি-থ্রেডিং এনভায়রনমেন্টে প্রিফার্ড নয়। কনকারেন্ট কলেকশন মাল্টি-থ্রেডিং এনভায়রনমেন্টে প্রধানত প্রিফার্ড।
৫ বাজারে প্রবর্তন ট্রেডিশনাল কলেকশন Java-র লিগেসি কলেকশন এবং কনকারেন্ট কলেকশনের আগে প্রবর্তিত। কনকারেন্ট কলেকশন JDK 1.5-এ প্রবর্তিত, অর্থাৎ ট্রেডিশনাল কলেকশনের পরে।
  1. জাভাতে ConcurrentHashMap এবং Synchronized HashMap-এর পার্থক্য

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

  3. জাভা কালেকশনে next() এবং hasNext()-এর পার্থক্য কী?

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