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

Java में volatile और transient के बीच अंतर


volatile कीवर्ड का उपयोग मल्टीथ्रेडिंग वातावरण में किया जाता है जहां दो थ्रेड एक ही वैरिएबल को एक साथ पढ़ और लिख रहे होते हैं। volatile कीवर्ड परिवर्तनों को सीधे मेन मेमोरी में फ्लश करता है बजाय CPU कैश के।

दूसरी ओर, transient कीवर्ड का उपयोग सीरियलाइज़ेशन के दौरान किया जाता है। जो फील्ड transient के रूप में मार्क किए जाते हैं वे सीरियलाइज़ेशन और डिसीरियलाइज़ेशन का हिस्सा नहीं हो सकते। यदि हम किसी वैरिएबल की वैल्यू को सेव नहीं करना चाहते हैं तो हम उस वैरिएबल के साथ transient कीवर्ड का उपयोग करते हैं।

क्र. सं. मुख्य बिंदु Volatile Transient
1 बुनियादी Volatile कीवर्ड का उपयोग परिवर्तनों को सीधे मेन मेमोरी में फ्लश करने के लिए किया जाता है Transient कीवर्ड का उपयोग सीरियलाइज़ेशन के दौरान वैरिएबल को बाहर करने के लिए किया जाता है
2. डिफ़ॉल्ट मान Volatile को डिफ़ॉल्ट मान से इनिशियलाइज़ नहीं किया जाता। डिसीरियलाइज़ेशन के दौरान, transient  वैरिएबल डिफ़ॉल्ट मान से इनिशियलाइज़ होते हैं
3 Static Volatile को static वैरिएबल के साथ उपयोग किया जा सकता है। Transient को static कीवर्ड के साथ उपयोग नहीं किया जा सकता
4 Final Volatile को final कीवर्ड के साथ उपयोग किया जा सकता है Transient को final कीवर्ड के साथ उपयोग नहीं किया जा सकता

Transient का उदाहरण

// एक नमूना क्लास जो transient कीवर्ड का उपयोग करके 
// उनके सीरियलाइज़ेशन को छोड़ देती है। 
class TransientExample implements Serializable { 
    transient int age; 
    // अन्य फील्ड सीरियलाइज़ करें 
    private String name; 
    private String address; 
    // अन्य कोड 
}

Volatile का उदाहरण

class VolatileExmaple extends Thread{ 
    boolean volatile isRunning = true; 
    public void run() { 
        long count=0; 
        while (isRunning) { 
            count++; 
        } 
        System.out.println("थ्रेड समाप्त हुआ।" + count); 
    } 
    public static void main(String[] args) throws InterruptedException { 
        VolatileExmaple t = new VolatileExmaple(); 
        t.start(); 
        Thread.sleep(2000); 
        t.isRunning = false; 
        t.join(); 
        System.out.println("isRunning सेट किया गया " + t.isRunning); 
    } 
}

  1. - जावा में Serialization और Externalization के बीच अंतर

    Serialization और Externalization दोनों ऑब्जेक्ट को बाइट स्ट्रीम में बदलने और बाइट स्ट्रीम को डेटाबेस या मेमोरी में स्टोर करने की प्रक्रियाएं हैं। जो क्लास java.io.Serializable इंटरफेस को इम्प्लीमेंट करती है उसे सीरियलाइज किया जा सकता है। दूसरी ओर, Externalization एप्लिकेशन में आवश्यकता के आधार पर कस

  1. - जावा में Iterator और Enumeration के बीच अंतर

    Iterator और Enumeration दोनों कलेक्शन से एलिमेंट्स को ट्रैवर्स और एक्सेस करने के लिए कर्सर हैं। वे दोनों कलेक्शन फ्रेमवर्क से संबंधित हैं। Enumeration JDK 1.0 में जोड़ा गया था और Iterator JDK 1.2 वर्जन में कलेक्शन फ्रेमवर्क में जोड़ा गया। Enumeration कलेक्शन में स्ट्रक्चरल चेंज नहीं कर सकता क्योंकि

  1. - Java में ArrayList और HashSet के बीच अंतर

    HashSet और ArrayList दोनों Java कलेक्शन फ्रेमवर्क के सबसे महत्वपूर्ण क्लासेस में से कुछ हैं।ArrayList और HashSet के बीच महत्वपूर्ण अंतर निम्नलिखित हैं।क्रमांकमुख्य बिंदुArrayListHashSet1कार्यान्वयनArrayList लिस्ट इंटरफेस का कार्यान्वयन है।दूसरी ओर HashSet सेट इंटरफेस का कार्यान्वयन है।2आंतरिक कार्या