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

জাভাতে volatile এবং transient কিওয়ার্ডের পার্থক্য

volatile কিওয়ার্ড মাল্টিথ্রেডেড এনভায়রনমেন্টে ব্যবহার হয়, যেখানে দুটি থ্রেড একই ভেরিয়েবল পড়ে ও লিখে। এটি পরিবর্তনগুলো সরাসরি মেইন মেমরি ফ্লাশ করে (CPU ক্যাশে না)।

transient কিওয়ার্ড সিরিয়ালাইজেশনের সময় ব্যবহার হয়। এটি চিহ্নিত ফিল্ডগুলো সিরিয়ালাইজেশন ও ডিসিরিয়ালাইজেশনের অংশ হয় না। কোনো ভেরিয়েবলের মান সংরক্ষণ না চাইলে transient ব্যবহার করা হয়।

ক্রমিক নং কী Volatile Transient
১ বেসিক পরিবর্তন সরাসরি মেইন মেমরিতে ফ্লাশ করে সিরিয়ালাইজেশনের সময় ভেরিয়েবল বাদ দেয়
২ ডিফল্ট ভ্যালু Volatile ডিফল্ট ভ্যালু দিয়ে ইনিশিয়ালাইজ হয় না ডিসিরিয়ালাইজেশনের সময় ডিফল্ট ভ্যালু দিয়ে ইনিশিয়ালাইজ হয়
৩ Static Static ভেরিয়েবলের সাথে ব্যবহার করা যায় Static কিওয়ার্ডের সাথে ব্যবহার করা যায় না
৪ Final Final কিওয়ার্ডের সাথে ব্যবহার করা যায় Final কিওয়ার্ডের সাথে ব্যবহার করা যায় না

Transient উদাহরণ

// সিরিয়ালাইজেশন থেকে বাদ দিতে transient ব্যবহার
class TransientExample implements Serializable {
    transient int age; // এটি সিরিয়ালাইজ হবে না
    
    private String name;
    private String address;
    // অন্যান্য কোড
}

Volatile উদাহরণ

class VolatileExample extends Thread {
    volatile boolean isRunning = true;
    
    public void run() {
        long count = 0;
        while (isRunning) {
            count++;
        }
        System.out.println("থ্রেড টার্মিনেটেড। " + count);
    }
    
    public static void main(String[] args) throws InterruptedException {
        VolatileExample t = new VolatileExample();
        t.start();
        Thread.sleep(2000);
        t.isRunning = false; // অন্য থ্রেড থেকে পরিবর্তন
        t.join();
        System.out.println("isRunning সেট করা হয়েছে: " + t.isRunning);
    }
}

মূল পার্থক্য: volatile থ্রেড সেফটি ও মেমরি ভিজিবিলিটির জন্য, transient সিরিয়ালাইজেশন কন্ট্রোলের জন্য।

  1. জাভাতে Exception এবং Error-এর পার্থক্য

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

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

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