Immutable Collections

Java Technologies - গুয়াভা (Guava)
170
170

গুয়াভা (Guava) লাইব্রেরির একটি গুরুত্বপূর্ণ ফিচার হলো Immutable Collections। এটি এমন একটি ডেটা স্ট্রাকচার প্রদান করে যা একবার তৈরি হলে তার ভিতরের ডেটা পরিবর্তন করা সম্ভব হয় না। এই ধরনের কালেকশন ব্যবহারের ফলে আপনার কোডে আরও নিরাপত্তা, পারফরম্যান্স এবং ভুল হবার সম্ভাবনা কমে যায়। Immutable Collections মূলত thread-safe (থ্রেড সেফ) এবং immutable (অপরিবর্তনীয়), যা মাল্টি-থ্রেডেড পরিবেশে অত্যন্ত কার্যকর।

Immutable Collections কি?

Immutable Collections হলো সেই কালেকশন যেগুলোর মধ্যে ডেটা একবার সেট করার পর কোনো পরিবর্তন করা সম্ভব নয়। অর্থাৎ, এদের মধ্যে add, remove, set কিংবা clear কোনো অপারেশন করা যায় না। যদি নতুন কোনো উপাদান যোগ করতে হয়, তবে একটি নতুন কালেকশন তৈরি করতে হয়।

গুয়াভা লাইব্রেরি এই Immutable Collections-এর জন্য বেশ কয়েকটি ডেটা স্ট্রাকচার সরবরাহ করে, যেমন:

  1. ImmutableList: এটি একটি অপরিবর্তনীয় লিস্ট (List) তৈরি করে।
  2. ImmutableSet: এটি একটি অপরিবর্তনীয় সেট (Set) তৈরি করে।
  3. ImmutableMap: এটি একটি অপরিবর্তনীয় ম্যাপ (Map) তৈরি করে।

Immutable Collections ব্যবহারের সুবিধা

  1. পারফরম্যান্স উন্নতি: Immutable Collections এর মাধ্যমে ডেটা একবার সেট করার পর আর কোনো পরিবর্তন করা না হলে, এগুলি প্রক্রিয়া করতে অনেক দ্রুত হয়। কারণ এটি নিশ্চিত করা হয় যে, ডেটা আর কখনও পরিবর্তিত হবে না।
  2. থ্রেড সেফ (Thread-safe): মাল্টি-থ্রেডেড প্রোগ্রামে Immutable Collections স্বয়ংক্রিয়ভাবে থ্রেড সেফ, কারণ একাধিক থ্রেড একই ডেটা একসাথে পরিবর্তন করতে পারে না।
  3. ভুলের সম্ভাবনা কমে যায়: ডেটা পরিবর্তন করার কোন সুযোগ না থাকায়, Immutable Collections ব্যবহারের মাধ্যমে ভুল হওয়ার সম্ভাবনা কমে যায়। এটি কোডের সঠিকতা বাড়ায় এবং নিরাপত্তা নিশ্চিত করে।
  4. ফাংশনাল প্রোগ্রামিংয়ের উপযোগিতা: Immutable Collections ফাংশনাল প্রোগ্রামিং শৈলীতে উপযুক্ত, কারণ এই ধরনের কালেকশন শুধুমাত্র ফাংশনাল অপারেশন ব্যবহার করে পরিচালিত হতে পারে, যার মাধ্যমে আপনি একটি নতুন কালেকশন তৈরি করতে পারেন কিন্তু পুরনো কালেকশন অপরিবর্তিত থাকে।

Immutable Collections তৈরি করা

গুয়াভা লাইব্রেরি দিয়ে Immutable Collections তৈরি করা অনেক সহজ। এখানে কিছু উদাহরণ দেওয়া হলো:

ImmutableList তৈরি করা

import com.google.common.collect.ImmutableList;

public class GuavaExample {
    public static void main(String[] args) {
        ImmutableList<String> immutableList = ImmutableList.of("Apple", "Banana", "Cherry");
        System.out.println(immutableList);
    }
}

এখানে, ImmutableList.of() ব্যবহার করে একটি ImmutableList তৈরি করা হয়েছে। একবার এটি তৈরি হলে, আপনি এর মধ্যে নতুন উপাদান যোগ করতে বা সরাতে পারবেন না।

ImmutableSet তৈরি করা

import com.google.common.collect.ImmutableSet;

public class GuavaExample {
    public static void main(String[] args) {
        ImmutableSet<Integer> immutableSet = ImmutableSet.of(1, 2, 3, 4);
        System.out.println(immutableSet);
    }
}

এখানে, ImmutableSet.of() ব্যবহার করে একটি ImmutableSet তৈরি করা হয়েছে। ImmutableSet-এ ডুপ্লিকেট মান থাকবে না, এবং এটি শুধুমাত্র একবার সেট করা হলে পরিবর্তন করা যাবে না।

ImmutableMap তৈরি করা

import com.google.common.collect.ImmutableMap;

public class GuavaExample {
    public static void main(String[] args) {
        ImmutableMap<String, String> immutableMap = ImmutableMap.of(
            "A", "Apple",
            "B", "Banana",
            "C", "Cherry"
        );
        System.out.println(immutableMap);
    }
}

এখানে, ImmutableMap.of() ব্যবহার করে একটি ImmutableMap তৈরি করা হয়েছে, যেখানে কীগুলোর সাথে মান জুড়ে দেওয়া হয়েছে। একবার সেট করা হলে, আপনি এই ম্যাপে কোনো পরিবর্তন করতে পারবেন না।


গুয়াভা লাইব্রেরির Immutable Collections ব্যবহার করে আপনি আপনার কোডকে আরও নির্ভরযোগ্য, নিরাপদ এবং কার্যকরী করতে পারেন। এটি ডেটা ব্যবস্থাপনার ক্ষেত্রে একটি শক্তিশালী টুল হিসেবে কাজ করে।

Content added By

Immutable Collection এর ধারণা

169
169

Guava লাইব্রেরির একটি গুরুত্বপূর্ণ ফিচার হলো Immutable Collection। Immutable Collection এমন এক ধরনের Collection Framework যা একবার তৈরি হলে পরবর্তীতে পরিবর্তন (modification) করা যায় না। অর্থাৎ, একবার Immutable Collection তৈরি হলে তাতে নতুন আইটেম যোগ করা, কোনো আইটেম সরানো বা আপডেট করা সম্ভব নয়।


Immutable Collection কেন গুরুত্বপূর্ণ?

নিরাপত্তা (Safety)

Immutable Collections তৈরি করলে এটি accidental modification থেকে কোডকে রক্ষা করে। এর ফলে ডেটা মিউটেবল (mutable) থাকার কারণে সৃষ্ট বাগের (bug) সম্ভাবনা কমে যায়।

কর্মক্ষমতা (Performance)

Immutable Collections সাধারণত immutable অবজেক্টের সাথে কাজ করে, যা ডেটা স্ট্রাকচারকে আরও দ্রুততর এবং কার্যকর করে। এটি কনকারেন্ট (concurrent) প্রোগ্রামিং-এর ক্ষেত্রে খুবই কার্যকর।

শেয়ারিং (Sharing)

Immutable Collections সহজেই শেয়ার করা যায় কারণ এগুলো থ্রেড-সেইফ (thread-safe) এবং কোনো থ্রেড ডেটাকে পরিবর্তন করতে পারে না।

মেমরি অপ্টিমাইজেশন (Memory Optimization)

Guava Immutable Collections অভ্যন্তরীণভাবে অপটিমাইজড থাকে, যা মেমরির ব্যবহারকে আরও কার্যকর করে তোলে।


Immutable Collection তৈরির ধরন

Guava লাইব্রেরি Immutable Collections তৈরির জন্য বেশ কয়েকটি ক্লাস সরবরাহ করে, যেমন:

  • ImmutableList
  • ImmutableSet
  • ImmutableMap

ImmutableList

import com.google.common.collect.ImmutableList;

public class ImmutableListExample {
    public static void main(String[] args) {
        ImmutableList<String> fruits = ImmutableList.of("Apple", "Banana", "Guava");

        System.out.println(fruits);
        // fruits.add("Orange"); // UnsupportedOperationException
    }
}

ImmutableSet

import com.google.common.collect.ImmutableSet;

public class ImmutableSetExample {
    public static void main(String[] args) {
        ImmutableSet<String> colors = ImmutableSet.of("Red", "Green", "Blue");

        System.out.println(colors);
        // colors.remove("Green"); // UnsupportedOperationException
    }
}

ImmutableMap

import com.google.common.collect.ImmutableMap;

public class ImmutableMapExample {
    public static void main(String[] args) {
        ImmutableMap<String, String> countryCodes = ImmutableMap.of(
                "US", "United States",
                "IN", "India",
                "BD", "Bangladesh"
        );

        System.out.println(countryCodes);
        // countryCodes.put("UK", "United Kingdom"); // UnsupportedOperationException
    }
}

Immutable Collection তৈরির পদ্ধতি

of() মেথড ব্যবহার করে

Guava-এর of() মেথড ব্যবহার করে দ্রুত Immutable Collection তৈরি করা যায়।

Builder প্যাটার্ন ব্যবহার করে

Immutable Collection তৈরিতে Builder প্যাটার্ন ব্যবহার করলে ডেটা ধীরে ধীরে যোগ করা যায়।

import com.google.common.collect.ImmutableList;

public class ImmutableBuilderExample {
    public static void main(String[] args) {
        ImmutableList<String> names = ImmutableList.<String>builder()
                .add("John")
                .add("Jane")
                .add("Doe")
                .build();

        System.out.println(names);
    }
}

Immutable Collection এর সীমাবদ্ধতা

  1. পরিবর্তনযোগ্য নয়: একবার তৈরি হলে Collection-এ কোনো পরিবর্তন সম্ভব নয়।
  2. নতুন আইটেম যোগ করা কঠিন: যদি ডেটা পরিবর্তন করতে হয়, তাহলে নতুন Immutable Collection তৈরি করতে হয়।
  3. মেমরি ব্যবহারে সীমাবদ্ধতা: বড় আকারের Immutable Collections বেশি মেমরি ব্যবহার করতে পারে।

Guava-এর Immutable Collections নিরাপদ এবং কার্যকর প্রোগ্রামিংয়ের জন্য একটি চমৎকার ফিচার। এটি বিশেষত কনকারেন্ট প্রোগ্রামিং এবং ডেটা শেয়ারিংয়ের ক্ষেত্রে কার্যকরী। Immutable Collection ব্যবহারের মাধ্যমে ডেটার স্থায়িত্ব এবং প্রোগ্রামের গুণগত মান বজায় রাখা সহজ হয়।

Content added By

ImmutableList, ImmutableSet, ImmutableMap এর ব্যবহার

127
127

Guava লাইব্রেরি Immutable Collections (ImmutableList, ImmutableSet, ImmutableMap) এর মাধ্যমে Java প্রোগ্রামে ডেটা মিউটেবল (পরিবর্তনযোগ্য) হওয়ার ঝুঁকি কমায়। Immutable Collections ব্যবহার করলে ডেটা Thread-Safe হয় এবং অনিচ্ছাকৃত পরিবর্তন থেকে সুরক্ষিত থাকে।


ImmutableList

ImmutableList কী?

ImmutableList হল এমন একটি তালিকা (list), যা তৈরি হওয়ার পর পরিবর্তন করা যায় না। এটি ArrayList-এর মতো কাজ করে কিন্তু মিউটেবল নয়।

ImmutableList তৈরি করা

import com.google.common.collect.ImmutableList;

public class ImmutableListExample {
    public static void main(String[] args) {
        ImmutableList<String> fruits = ImmutableList.of("Apple", "Banana", "Guava");
        System.out.println(fruits);

        // ImmutableList Builder ব্যবহার
        ImmutableList<String> vegetables = ImmutableList.<String>builder()
                .add("Carrot")
                .add("Potato")
                .add("Tomato")
                .build();
        System.out.println(vegetables);

        // fruits.add("Mango"); // এটি কম্পাইল-টাইমে এরর দেবে, কারণ ImmutableList পরিবর্তন করা যায় না।
    }
}

ImmutableSet

ImmutableSet কী?

ImmutableSet হল এমন একটি সেট (set), যা তৈরি হওয়ার পর পরিবর্তন করা যায় না। এটি HashSet-এর মতো কাজ করে কিন্তু Thread-Safe এবং মিউটেবল নয়।

ImmutableSet তৈরি করা

import com.google.common.collect.ImmutableSet;

public class ImmutableSetExample {
    public static void main(String[] args) {
        ImmutableSet<String> colors = ImmutableSet.of("Red", "Green", "Blue");
        System.out.println(colors);

        // ImmutableSet Builder ব্যবহার
        ImmutableSet<String> shapes = ImmutableSet.<String>builder()
                .add("Circle")
                .add("Square")
                .add("Triangle")
                .build();
        System.out.println(shapes);

        // colors.add("Yellow"); // এটি এরর দেবে কারণ ImmutableSet পরিবর্তনযোগ্য নয়।
    }
}

ImmutableMap

ImmutableMap কী?

ImmutableMap হল এমন একটি ম্যাপ (map), যা তৈরি হওয়ার পর পরিবর্তন করা যায় না। এটি HashMap-এর মতো কাজ করে কিন্তু আরও সুরক্ষিত এবং অপরিবর্তনীয়।

ImmutableMap তৈরি করা

import com.google.common.collect.ImmutableMap;

public class ImmutableMapExample {
    public static void main(String[] args) {
        // সরাসরি ImmutableMap তৈরি
        ImmutableMap<String, String> countryCapitals = ImmutableMap.of(
                "Bangladesh", "Dhaka",
                "India", "New Delhi",
                "USA", "Washington D.C."
        );
        System.out.println(countryCapitals);

        // ImmutableMap Builder ব্যবহার
        ImmutableMap<String, Integer> studentMarks = ImmutableMap.<String, Integer>builder()
                .put("Alice", 85)
                .put("Bob", 90)
                .put("Charlie", 80)
                .build();
        System.out.println(studentMarks);

        // countryCapitals.put("UK", "London"); // এটি কম্পাইল-টাইমে এরর দেবে।
    }
}

Immutable Collections কেন ব্যবহার করবেন?

  1. Thread-Safety: Immutable Collections পরিবর্তন করা যায় না, তাই একাধিক থ্রেড থেকে নিরাপদ।
  2. কোডের বাগ কমায়: অনিচ্ছাকৃত পরিবর্তন থেকে রক্ষা করে।
  3. শুধুমাত্র-পড়ার উপযোগী ডেটা (Read-Only Data) সংরক্ষণে কার্যকর।

ব্যবহার ক্ষেত্র

  1. Configuration Data: Immutable Collections কনফিগারেশন ডেটার জন্য উপযুক্ত।
  2. Constant Data: যেখানে ডেটা কখনো পরিবর্তন করা হবে না।
  3. Concurrent Programming: একাধিক থ্রেডের মধ্যে ডেটা সুরক্ষিত রাখতে।

Immutable Collections-এর সীমাবদ্ধতা

  • পরিবর্তনযোগ্য নয়, তাই নতুন ডেটা যোগ করতে হলে নতুন Immutable Collection তৈরি করতে হয়।
  • বড় ডেটা সেটে কিছুটা বেশি মেমোরি ব্যবহার হতে পারে।

Guava এর ImmutableList, ImmutableSet, এবং ImmutableMap প্রোগ্রামের সুরক্ষা এবং দক্ষতা বাড়াতে গুরুত্বপূর্ণ ভূমিকা পালন করে। এগুলো জাভার স্ট্যান্ডার্ড Collections API-র একটি শক্তিশালী বিকল্প।

Content added By

Immutable Collections তৈরি করার কৌশল

126
126

গুয়াভা (Guava) লাইব্রেরি Java-তে Immutable Collections তৈরি করার জন্য অত্যন্ত কার্যকরী এবং সহজ উপায় প্রদান করে। Immutable Collections এমন কোলেকশন যা একবার তৈরি হলে তার মধ্যে কোনো পরিবর্তন করা যায় না। এগুলো ডেটা পরিবর্তনশীলতা বা মিউটেশন (Mutation) থেকে মুক্ত থাকে, যার ফলে সেগুলোর সাথে কাজ করা অনেক নিরাপদ এবং কার্যকর।

গুয়াভা লাইব্রেরির মাধ্যমে Immutable Collections তৈরি করতে, ImmutableList, ImmutableSet, ImmutableMap ইত্যাদি কোলেকশন ব্যবহার করা হয়। এগুলোর কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য হলো:

  • একবার তৈরি হলে এই কোলেকশনের ডেটা পরিবর্তন করা যায় না।
  • এগুলো উচ্চ কার্যকারিতা প্রদান করে কারণ এগুলো মিউটেবল কোলেকশনের তুলনায় কম মেমরি ব্যবহার করে এবং সহজে কনকারেন্সি সমস্যা এড়ানো যায়।

ImmutableList তৈরি করা

গুয়াভা লাইব্রেরিতে ImmutableList তৈরি করতে ImmutableList ক্লাস ব্যবহার করা হয়। এখানে একটি উদাহরণ দেখানো হলো:

import com.google.common.collect.ImmutableList;

public class ImmutableExample {
    public static void main(String[] args) {
        ImmutableList<String> immutableList = ImmutableList.of("Apple", "Banana", "Cherry");
        
        // ImmutableList তে উপাদান যোগ বা পরিবর্তন করা যাবে না
        // immutableList.add("Date"); // এটি কম্পাইল টাইম এরর দিবে
        
        System.out.println(immutableList);
    }
}

এখানে, ImmutableList.of() মেথডটি ব্যবহার করে একটি অপরিবর্তনীয় তালিকা তৈরি করা হয়েছে। এর পরে কোনো উপাদান যুক্ত বা মুছে ফেলা সম্ভব নয়।

ImmutableSet তৈরি করা

ImmutableSet তৈরি করতে ImmutableSet ক্লাস ব্যবহার করা হয়। এর ব্যবহার খুবই সহজ:

import com.google.common.collect.ImmutableSet;

public class ImmutableSetExample {
    public static void main(String[] args) {
        ImmutableSet<String> immutableSet = ImmutableSet.of("Java", "Python", "C++");
        
        // ImmutableSet এ কোনো উপাদান পরিবর্তন করা যাবে না
        // immutableSet.add("Ruby"); // এটি কম্পাইল টাইম এরর দিবে
        
        System.out.println(immutableSet);
    }
}

এখানে, ImmutableSet.of() মেথডটি ব্যবহার করে একটি অপরিবর্তনীয় সেট তৈরি করা হয়েছে, যেখানে কোনো উপাদান যোগ বা মুছে ফেলা সম্ভব নয়।

ImmutableMap তৈরি করা

ImmutableMap তৈরি করতে ImmutableMap ক্লাস ব্যবহার করা হয়। এই উদাহরণে কী-ভ্যালু পেয়ারস (key-value pairs) ব্যবহার করা হয়েছে:

import com.google.common.collect.ImmutableMap;

public class ImmutableMapExample {
    public static void main(String[] args) {
        ImmutableMap<String, Integer> immutableMap = ImmutableMap.of(
            "One", 1, 
            "Two", 2, 
            "Three", 3
        );
        
        // ImmutableMap এ কোনো কী বা ভ্যালু পরিবর্তন করা যাবে না
        // immutableMap.put("Four", 4); // এটি কম্পাইল টাইম এরর দিবে
        
        System.out.println(immutableMap);
    }
}

এখানে ImmutableMap.of() মেথডটি ব্যবহার করে একটি অপরিবর্তনীয় ম্যাপ তৈরি করা হয়েছে, যা কোনো পরিবর্তন সাপোর্ট করে না।

Immutable Collections এর সুবিধা

  1. নিরাপত্তা: Immutable Collections এর মধ্যে ডেটা একবার সেট হয়ে গেলে পরিবর্তন করা সম্ভব নয়, তাই এগুলো মাল্টি-থ্রেড পরিবেশে নিরাপদ।
  2. পারফরম্যান্স: Immutable Collections কার্যকরীভাবে কম মেমরি ব্যবহার করে এবং দ্রুত অপারেশন প্রদান করে।
  3. সহজ ব্যবহার: কোডের মধ্যে মিউটেশন থেকে মুক্তি পাওয়ার ফলে কনকর্ডেন্সি সমস্যা হ্রাস পায় এবং কোডটি আরও পড়তে সুবিধাজনক হয়।

Content added By

Collections এর Immutable এবং Thread-safe ব্যবস্থাপনা

104
104

গুয়াভা লাইব্রেরি জাভা ডেভেলপারদের জন্য বিভিন্ন কোলেকশন ম্যানেজমেন্ট টুলস প্রদান করে, যার মধ্যে Immutable এবং Thread-safe কোলেকশন ব্যবস্থাপনা বিশেষ গুরুত্বের। এগুলি কোডের স্থিতিশীলতা, কর্মক্ষমতা এবং নিরাপত্তা নিশ্চিত করতে সহায়তা করে। এখানে গুয়াভার Immutable এবং Thread-safe কোলেকশন ব্যবস্থাপনা নিয়ে বিস্তারিত আলোচনা করা হলো।


Immutable কোলেকশন

Immutable কোলেকশন গুলি এমন ধরনের কোলেকশন যা একবার তৈরি হওয়ার পর এর উপাদানগুলি পরিবর্তন করা যায় না। এর মাধ্যমে কোডে স্থিতিশীলতা এবং নিরাপত্তা বৃদ্ধি পায়, কারণ এ ধরনের কোলেকশনগুলির উপাদান পরিবর্তন হওয়ার সম্ভাবনা থাকে না, যা ভুল বা অপরিকল্পিত পরিবর্তনের ঝুঁকি কমায়।

গুয়াভার Immutable কোলেকশন

গুয়াভা লাইব্রেরি ImmutableList, ImmutableSet, ImmutableMap এর মতো কোলেকশন ক্লাস প্রদান করে, যা একবার তৈরি হলে এর উপাদানগুলি অপরিবর্তনীয় হয়ে যায়। এগুলি তৈরি করার পর এর কোনও উপাদান যোগ বা মুছে ফেলা যায় না।

উদাহরণ:

import com.google.common.collect.ImmutableList;

public class GuavaImmutableExample {
    public static void main(String[] args) {
        ImmutableList<String> immutableList = ImmutableList.of("Apple", "Banana", "Orange");
        System.out.println(immutableList);  // [Apple, Banana, Orange]
        
        // immutableList.add("Grapes");  // Error: ImmutableList is unmodifiable
    }
}

এই উদাহরণে, ImmutableList তৈরি করার পর এর উপাদানগুলিতে কোনো পরিবর্তন করা যাবে না। এটি অ্যাপ্লিকেশনের স্থিতিশীলতা এবং পারফরম্যান্সের জন্য উপকারী।

Immutable কোলেকশনের সুবিধা

  • নিরাপত্তা: যেহেতু উপাদান পরিবর্তন করা যায় না, এটি অ্যাপ্লিকেশনের নিরাপত্তা এবং সঠিকতা বজায় রাখে।
  • সরাসরি অ্যাক্সেস: Immutable কোলেকশনে সরাসরি উপাদান অ্যাক্সেস করা যায়, যা কর্মক্ষমতা বাড়ায়।
  • সহজ রক্ষণাবেক্ষণ: কোডে কম পরিবর্তন প্রয়োজন, কারণ immutable কোলেকশনের উপাদানগুলি অপরিবর্তনীয় থাকে।

Thread-safe কোলেকশন

Thread-safe কোলেকশন গুলি এমন ধরনের কোলেকশন যা একাধিক থ্রেড দ্বারা নিরাপদভাবে ব্যবহার করা যেতে পারে। যখন একাধিক থ্রেড একে অপরের সাথে সমান্তরালভাবে কাজ করে, তখন ডাটা ইন্টেগ্রিটি (data integrity) বজায় রাখা অত্যন্ত গুরুত্বপূর্ণ। গুয়াভা লাইব্রেরি বিভিন্ন ধরনের Thread-safe কোলেকশন প্রদান করে, যা সমান্তরাল পরিবেশে কার্যকরী।

গুয়াভার Thread-safe কোলেকশন

গুয়াভা লাইব্রেরি ListenableFuture এবং Atomic কোলেকশন সহ কিছু Thread-safe টুলস সরবরাহ করে। এর মধ্যে কিছু টুল যেমন ImmutableList এবং ImmutableMap নিজেই Thread-safe। তবে, যদি থ্রেড-নিরাপদ কোলেকশন প্রয়োজন হয়, তবে Multiset, Multimap ইত্যাদি ক্লাসগুলি Thread-safe ব্যবস্থাপনায় সহায়ক।

উদাহরণ:

import com.google.common.collect.Lists;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;

import java.util.concurrent.Executors;

public class GuavaThreadSafeExample {
    public static void main(String[] args) throws Exception {
        ListeningExecutorService executorService = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(2));
        
        ListenableFuture<Integer> future = executorService.submit(() -> {
            // Some task
            return 123;
        });

        // Access the result asynchronously
        Futures.addCallback(future, new com.google.common.util.concurrent.ListenableFutureCallback<Integer>() {
            public void onSuccess(Integer result) {
                System.out.println("Result: " + result);
            }

            public void onFailure(Throwable t) {
                System.err.println("Error: " + t.getMessage());
            }
        }, executorService);
    }
}

এই উদাহরণে, ListenableFuture ক্লাসটি ব্যবহার করে একটি অ্যাসিঙ্ক্রোনাস টাস্কের মাধ্যমে Thread-safe কার্যক্রম সম্পাদন করা হয়েছে। ListenableFuture নিশ্চিত করে যে থ্রেডগুলি সঠিকভাবে একসাথে কাজ করছে এবং ফলাফল সঠিকভাবে হ্যান্ডেল করা হচ্ছে।

Thread-safe কোলেকশনের সুবিধা

  • থ্রেড সেফটি: একাধিক থ্রেড নিরাপদভাবে কোলেকশন ব্যবহার করতে পারে।
  • অ্যাসিঙ্ক্রোনাস প্রসেসিং: থ্রেড-নিরাপদ কোলেকশন সমান্তরাল অ্যাক্সেসের জন্য আদর্শ, যা অ্যাসিঙ্ক্রোনাস প্রসেসিং সাপোর্ট করে।
  • পারফরম্যান্স: থ্রেড-নিরাপদ কোলেকশন ব্যবহার করলে অ্যাপ্লিকেশনটি আরও দ্রুত এবং মসৃণভাবে চলে।

গুয়াভা লাইব্রেরির Immutable এবং Thread-safe কোলেকশন ব্যবস্থাপনা উন্নত কোড লেখা এবং পারফরম্যান্সে সাহায্য করে। Immutable কোলেকশন স্থিতিশীল এবং নিরাপদ কোড নিশ্চিত করে, আর Thread-safe কোলেকশন সিস্টেমের মধ্যে ডেটা নিরাপত্তা এবং দক্ষতা বজায় রাখে।

Content added By
Promotion