ConcurrentHashMap এর নতুন ফিচারসমূহ

Concurrency Enhancements (কনকারেন্সি উন্নতি) - জাভা (Java 8) - Computer Programming

268

Java 8 এ ConcurrentHashMap-এ কিছু গুরুত্বপূর্ণ নতুন ফিচার এবং অপারেশন যোগ করা হয়েছে যা মাল্টিথ্রেডিং এবং কনকারেন্ট প্রোগ্রামিং এর ক্ষেত্রে কার্যকারিতা উন্নত করেছে। ConcurrentHashMap একটি থ্রেড-সেফ Map অ্যাপ্লিকেশন, যা একাধিক থ্রেডের দ্বারা একযোগভাবে অ্যাক্সেস করা হলেও ভালো পারফরম্যান্স প্রদান করে। এটি java.util.concurrent প্যাকেজে অন্তর্ভুক্ত।

Java 8-এ ConcurrentHashMap এর নতুন ফিচারগুলো মূলত Lambda Expressions, forEach(), compute(), merge(), replaceAll() এবং computeIfAbsent() সহ আরও অনেক কার্যকরী মেথডের মাধ্যমে ব্যাপকভাবে উন্নত করা হয়েছে। এই ফিচারগুলো ব্যবহার করে আপনি আরও কার্যকরীভাবে কনকারেন্ট প্রোগ্রামিং করতে পারেন।


1. forEach() Method (Java 8)

Java 8-এ ConcurrentHashMap এ নতুন forEach() মেথড যোগ করা হয়েছে, যা একটি lambda expression ব্যবহার করে ম্যাপের সমস্ত এন্ট্রি উপাদানগুলোকে iterate (পর্যালোচনা) করতে ব্যবহৃত হয়। এটি BiConsumer ইনটারফেস গ্রহণ করে।

উদাহরণ:

import java.util.concurrent.ConcurrentHashMap;

public class ConcurrentHashMapForEachExample {
    public static void main(String[] args) {
        ConcurrentHashMap<Integer, String> map = new ConcurrentHashMap<>();
        map.put(1, "One");
        map.put(2, "Two");
        map.put(3, "Three");

        // Lambda expression ব্যবহার করে forEach মেথড
        map.forEach((key, value) -> {
            System.out.println("Key: " + key + ", Value: " + value);
        });
    }
}

Output:

Key: 1, Value: One
Key: 2, Value: Two
Key: 3, Value: Three

এখানে, forEach() মেথডে ল্যাম্বডা এক্সপ্রেশন ব্যবহার করা হয়েছে যা ম্যাপের সমস্ত কিপেয়ার (key-value pair) প্রিন্ট করে।


2. compute() Method (Java 8)

compute() মেথডটি একটি কিপেয়ার (key-value pair) আপডেট করতে ব্যবহৃত হয়, যদি যে key-এর জন্য নতুন ভ্যালু সেট করতে চান তা ম্যাপে না থাকে, তাহলে এটি BiFunction ইনটারফেস ব্যবহার করে নতুন ভ্যালু তৈরি করে।

উদাহরণ:

import java.util.concurrent.ConcurrentHashMap;

public class ConcurrentHashMapComputeExample {
    public static void main(String[] args) {
        ConcurrentHashMap<Integer, String> map = new ConcurrentHashMap<>();
        map.put(1, "One");
        map.put(2, "Two");

        // compute() মেথড ব্যবহার করে ভ্যালু পরিবর্তন করা
        map.compute(1, (key, value) -> value + " Updated");
        map.compute(3, (key, value) -> "Three");

        System.out.println(map);
    }
}

Output:

{1=One Updated, 2=Two, 3=Three}

এখানে, compute() মেথড 1 কিপেয়ার এর ভ্যালুকে আপডেট করেছে এবং 3 কিপেয়ারটি নতুন করে যোগ করেছে।


3. computeIfAbsent() Method (Java 8)

computeIfAbsent() মেথডটি নির্দিষ্ট কিপেয়ার (key) উপস্থিত না থাকলে নতুন ভ্যালু তৈরি করার জন্য ব্যবহার করা হয়। এটি শুধুমাত্র যদি key আগেই ম্যাপে না থাকে তবে নতুন ভ্যালু তৈরি করবে।

উদাহরণ:

import java.util.concurrent.ConcurrentHashMap;

public class ConcurrentHashMapComputeIfAbsentExample {
    public static void main(String[] args) {
        ConcurrentHashMap<Integer, String> map = new ConcurrentHashMap<>();
        map.put(1, "One");

        // computeIfAbsent() ব্যবহার করে key উপস্থিত না থাকলে ভ্যালু যোগ করা
        map.computeIfAbsent(2, key -> "Two");

        System.out.println(map);
    }
}

Output:

{1=One, 2=Two}

এখানে, 2 কিপেয়ারটি computeIfAbsent() মেথডের মাধ্যমে যোগ করা হয়েছে কারণ এটি আগে থেকেই ম্যাপে ছিল না।


4. merge() Method (Java 8)

merge() মেথডটি দুইটি কিপেয়ার (key-value pair) একত্রিত করতে ব্যবহৃত হয়, যখন দুটি key একই হয়। এটি BiFunction গ্রহণ করে যা দুটি ভ্যালুকে একত্রিত করে।

উদাহরণ:

import java.util.concurrent.ConcurrentHashMap;

public class ConcurrentHashMapMergeExample {
    public static void main(String[] args) {
        ConcurrentHashMap<Integer, String> map = new ConcurrentHashMap<>();
        map.put(1, "One");
        map.put(2, "Two");

        // merge() ব্যবহার করে দুইটি key-value একত্রিত করা
        map.merge(2, "Updated", (oldValue, newValue) -> oldValue + " " + newValue);
        map.merge(3, "Three", (oldValue, newValue) -> oldValue + " " + newValue);

        System.out.println(map);
    }
}

Output:

{1=One, 2=Two Updated, 3=Three}

এখানে, merge() মেথড 2 কিপেয়ারটির ভ্যালুকে আপডেট করেছে এবং 3 কিপেয়ারটি নতুনভাবে যোগ করেছে।


5. replaceAll() Method (Java 8)

replaceAll() মেথডটি সমস্ত ভ্যালুকে একটি নতুন ভ্যালু দ্বারা প্রতিস্থাপন করতে ব্যবহৃত হয়, যেখানে আপনি একটি BiFunction পাস করে নির্দিষ্ট মানের পরিবর্তন করতে পারেন।

উদাহরণ:

import java.util.concurrent.ConcurrentHashMap;

public class ConcurrentHashMapReplaceAllExample {
    public static void main(String[] args) {
        ConcurrentHashMap<Integer, String> map = new ConcurrentHashMap<>();
        map.put(1, "One");
        map.put(2, "Two");

        // replaceAll() মেথড ব্যবহার করে সমস্ত ভ্যালু পরিবর্তন
        map.replaceAll((key, value) -> value.toUpperCase());

        System.out.println(map);
    }
}

Output:

{1=ONE, 2=TWO}

এখানে, replaceAll() মেথড সব ভ্যালুকে uppercase-এ পরিবর্তন করেছে।


সারসংক্ষেপ

Java 8-এ ConcurrentHashMap-এ অনেক নতুন ফিচার এবং মেথড যোগ করা হয়েছে, যা thread-safeভাবে ম্যাপের উপাদানগুলির সাথে কার্যকরভাবে কাজ করতে সাহায্য করে। বিশেষ করে forEach(), compute(), computeIfAbsent(), merge(), এবং replaceAll() মেথডগুলি ব্যবহার করে আপনি আরও কার্যকরী এবং নমনীয় কোড লিখতে পারবেন।

  • forEach(): ম্যাপের উপাদানগুলোর উপর ল্যাম্বডা এক্সপ্রেশন প্রয়োগ করা।
  • compute(): একটি কিপেয়ার আপডেট করা।
  • computeIfAbsent(): নির্দিষ্ট কিপেয়ার উপস্থিত না থাকলে নতুন ভ্যালু তৈরি করা।
  • merge(): দুটি কিপেয়ার একত্রিত করা।
  • replaceAll(): সমস্ত ভ্যালু পরিবর্তন করা।

এগুলো ConcurrentHashMap-কে আরও শক্তিশালী এবং নমনীয় করে তোলে মাল্টিথ্রেডেড পরিবেশে ডেটা ম্যানিপুলেশন করতে।

Content added By
Promotion

Are you sure to start over?

Loading...