ArrayList.IsSynchronized गुण इंगित करता है कि ArrayList थ्रेड-सेफ (सिंक्रनाइज़्ड) है या नहीं। मानक ArrayList false लौटाता है। सिंक्रनाइज़्ड रैपर के लिए ArrayList.Synchronized का उपयोग करें।
उदाहरण 1: दो असिंक्रनाइज़्ड ArrayLists
using System;
using System.Collections;
public class Demo
{
public static void Main(String[] args)
{
ArrayList list1 = new ArrayList();
list1.Add("A");
list1.Add("B");
list1.Add("C");
list1.Add("D");
list1.Add("E");
list1.Add("F");
list1.Add("G");
list1.Add("H");
list1.Add("I");
Console.WriteLine("Elements in ArrayList1...");
foreach (string res in list1)
{
Console.WriteLine(res);
}
ArrayList list2 = new ArrayList();
list2.Add("A");
list2.Add("B");
list2.Add("C");
list2.Add("D");
list2.Add("E");
list2.Add("F");
list2.Add("G");
list2.Add("H");
list2.Add("I");
Console.WriteLine("Elements in ArrayList2...");
foreach (string res in list2)
{
Console.WriteLine(res);
}
Console.WriteLine("Is ArrayList synchronized? = " + list2.IsSynchronized);
}
}
आउटपुट
Elements in ArrayList1... A B C D E F G H I Elements in ArrayList2... A B C D E F G H I Is ArrayList synchronized? = False
उदाहरण 2: सिंक्रनाइज़्ड रैपर बनाना
using System;
using System.Collections;
public class Demo
{
public static void Main(String[] args)
{
ArrayList list1 = new ArrayList();
list1.Add("One");
list1.Add("Two");
list1.Add("Three");
list1.Add("Four");
list1.Add("Five");
Console.WriteLine("Elements in ArrayList...");
foreach (string res in list1)
{
Console.WriteLine(res);
}
ArrayList list = ArrayList.Synchronized(list1);
Console.WriteLine("Is ArrayList synchronized? = " + list.IsSynchronized);
}
}
आउटपुट
Elements in ArrayList... One Two Three Four Five Is ArrayList synchronized? = True
IsSynchronized केवल रैपर स्थिति दर्शाता है। सिंक्रनाइज़्ड रैपर पर भी, एन्यूमरेशन थ्रेड-सेफ नहीं है जब तक कि मैन्युअल रूप से lock(list.SyncRoot) न किया जाए। उच्च प्रदर्शन थ्रेड-सेफ संग्रह के लिए System.Collections.Concurrent नामस्थान का उपयोग करें।