java.util.Collections ক্লাসে কালেকশন নিয়ে কাজ করার জন্য বিভিন্ন পলিমরফিক এলগরিদম সহיטת মেথড রয়েছে। এই ক্লাসটি বিভিন্ন টাইপের কালেকশনকে থ্রেড-সেফ (সিঙ্ক্রোনাইজড) করার জন্য synchronizedXxx() মেথডগুলো প্রদান করে।
প্রধান সিঙ্ক্রোনাইজড মেথডসমূহ
| ক্রম | মেথড ও বর্ণনা |
|---|---|
| 1 | static <T> Collection<T> synchronizedCollection(Collection<T> c) যেকোনো কালেকশন অবজেক্ট গ্রহণ করে এবং একটি সিঙ্ক্রোনাইজড (থ্রেড-সেফ) কালেকশন রিটার্ন করে। |
| 2 | static <T> List<T> synchronizedList(List<T> list) List ইন্টারফেসের অবজেক্ট গ্রহণ করে একটি সিঙ্ক্রোনাইজড লিস্ট রিটার্ন করে। |
| 3 | static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) Map ইন্টারফেসের অবজেক্ট গ্রহণ করে একটি সিঙ্ক্রোনাইজড ম্যাপ রিটার্ন করে। |
| 4 | static <T> Set<T> synchronizedSet(Set<T> s) Set ইন্টারফেসের অবজেক্ট গ্রহণ করে একটি সিঙ্ক্রোনাইজড সেট রিটার্ন করে। |
| 5 | static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m) SortedMap ইন্টারফেসের অবজেক্ট গ্রহণ করে একটি সিঙ্ক্রোনাইজড সোর্টেড ম্যাপ রিটার্ন করে। |
| 6 | static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s) SortedSet ইন্টারফেসের অবজেক্ট গ্রহণ করে একটি সিঙ্ক্রোনাইজড সোর্টেড সেট রিটার্ন করে। |
উদাহরণ
import java.util.Collection;
import java.util.Collections;
import java.util.Vector;
public class CollectionReadOnly {
public static void main(String[] args) {
Vector<String> vector = new Vector<String>();
vector.add("JavaFx");
vector.add("Java");
vector.add("WebGL");
vector.add("OpenCV");
System.out.println(vector);
Collection<String> synchronizedVector = Collections.synchronizedCollection(vector);
System.out.println("Synchronized " + synchronizedVector);
synchronizedVector.add("CoffeeScript");
}
}
আউটপুট
[JavaFx, Java, WebGL, OpenCV] Synchronized [JavaFx, Java, WebGL, OpenCV]
দ্রষ্টব্য: সিঙ্ক্রোনাইজড র্যাপার (wrapper) মাল্টি-থ্রেডেড এনভায়রনমেন্টে সেফ्टी দেয়, কিন্তু ইটারেশন (iteration) করার সময় ম্যানুয়ালি সিঙ্ক্রোনাইজেশন প্রয়োজন হয়। আরও ভালো পারফরম্যান্সের জন্য java.util.concurrent প্যাকেজের কনকারেন্ট কালেকশন (যেমন ConcurrentHashMap, CopyOnWriteArrayList) ব্যবহার করা উচিত।