Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java में कलेक्शन को थ्रेड-सेफ कैसे बनाएं?

java.util.Collections क्लास विभिन्न कलेक्शन प्रकारों के लिए थ्रेड-सेफ (सिंक्रोनाइज़्ड) रैपर प्रदान करने के लिए स्थैतिक विधियाँ प्रदान करती है।

मुख्य विधियाँ

क्र.सं.विधि और विवरण
1static <T> Collection<T> synchronizedCollection(Collection<T> c)
निर्दिष्ट कलेक्शन द्वारा समर्थित एक सिंक्रोनाइज़्ड (थ्रेड-सेफ) कलेक्शन लौटाता है।
2static <T> List<T> synchronizedList(List<T> list)
निर्दिष्ट लिस्ट द्वारा समर्थित एक सिंक्रोनाइज़्ड (थ्रेड-सेफ) लिस्ट लौटाता है।
3static <K,V> Map<K,V> synchronizedMap(Map<K,V> m)
निर्दिष्ट मैप द्वारा समर्थित एक सिंक्रोनाइज़्ड (थ्रेड-सेफ) मैप लौटाता है।
4static <T> Set<T> synchronizedSet(Set<T> s)
निर्दिष्ट सेट द्वारा समर्थित एक सिंक्रोनाइज़्ड (थ्रेड-सेफ) सेट लौटाता है।
5static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m)
निर्दिष्ट सॉर्टेड मैप द्वारा समर्थित एक सिंक्रोनाइज़्ड (थ्रेड-सेफ) सॉर्टेड मैप लौटाता है।
6static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s)
निर्दिष्ट सॉर्टेड सेट द्वारा समर्थित एक सिंक्रोनाइज़्ड (थ्रेड-सेफ) सॉर्टेड सेट लौटाता है।

उदाहरण

import java.util.Collection;
import java.util.Collections;
import java.util.Vector;

public class ThreadSafeCollection {
    public static void main(String[] args) {
        Vector vector = new Vector<>();
        vector.add("JavaFx");
        vector.add("Java");
        vector.add("WebGL");
        vector.add("OpenCV");
        System.out.println("Original: " + vector);

        Collection synchronizedVector = Collections.synchronizedCollection(vector);
        System.out.println("Synchronized: " + synchronizedVector);
        synchronizedVector.add("CoffeeScript");
    }
}

आउटपुट

Original: [JavaFx, Java, WebGL, OpenCV]
Synchronized: [JavaFx, Java, WebGL, OpenCV]

महत्वपूर्ण नोट

सिंक्रोनाइज़्ड रैपर का उपयोग करते समय, यौगिक संक्रियाओं (जैसे पुनरावृत्ति, सशर्त संशोधन) के दौरान मैन्युअल रूप से रिटर्न किए गए कलेक्शन पर सिंक्रोनाइज़ करना अभी भी आवश्यक है ताकि थ्रेड सुरक्षा सुनिश्चित हो सके।

  1. Twitter पर थ्रेड कैसे बनाएं Twitter पर थ्रेड कैसे बनाएं

    जानने योग्य बातें एक नया ट्वीट कंपोज करें, फिर निचले-दाएं कोने में नीले + आइकन को चुनें ताकि दूसरा ट्वीट शुरू हो सके। तब तक दोहराएं जब तक आप अपना थ्रेड पूरा न कर लें। जब आप पब्लिश करने के लिए तैयार हों, तो Tweet All चुनें। थ्रेड में ट्वीट्स की संख्या शामिल करना सामान्य Twitter शिष्टाचार है, जैसे पह

  1. - Java में ऑब्जेक्ट को GC के लिए योग्य बनाने के कितने तरीके हैं?

    अनरेफरेंस्ड ऑब्जेक्ट्स को नष्ट करने की प्रक्रिया को गार्बेज कलेक्शन (GC) कहा जाता है। एक बार जब कोई ऑब्जेक्ट अनरेफरेंस्ड हो जाता है, तो उसे अनयूज्ड ऑब्जेक्ट माना जाता है, इसलिए JVM स्वचालित रूप से उस ऑब्जेक्ट को नष्ट कर देता है। किसी ऑब्जेक्ट को GC के लिए योग्य बनाने के विभिन्न तरीके हैं। ऑब्जेक्ट क

  1. - Java में सिंगलटन एनम कैसे बनाएं?

    सिंगलटन पैटर्न एक क्लास के इंस्टेंटिएशन को एक ऑब्जेक्ट तक सीमित करता है। INSTANCE एक पब्लिक स्टैटिक फाइनल फील्ड है जो एनम इंस्टेंस को दर्शाता है। हम EnumSingleton.INSTANCE के साथ क्लास का इंस्टेंस प्राप्त कर सकते हैं लेकिन इसे गेटर में एनकैप्सुलेट करना बेहतर है यदि हम इम्प्लीमेंटेशन बदलना चाहते हैं।