Web Development Introduction গাইড ও নোট

275

AtomicBoolean হল Java এর java.util.concurrent.atomic প্যাকেজের একটি ক্লাস, যা boolean ডেটা টাইপের উপর atomic operations সম্পাদন করতে ব্যবহৃত হয়। এটি মাল্টি-থ্রেডেড অ্যাপ্লিকেশনগুলিতে boolean ভ্যারিয়েবলকে থ্রেড-সেফভাবে পরিচালনা করতে সাহায্য করে এবং race conditions প্রতিরোধে সহায়ক।

AtomicBoolean ক্লাসটি atomic operations সরবরাহ করে, যার মাধ্যমে boolean মানটি একাধিক থ্রেডের দ্বারা নিরাপদভাবে পরিবর্তিত হতে পারে, অর্থাৎ কোনো থ্রেড অন্যথায় হস্তক্ষেপ করতে পারে না যতক্ষণ না অপারেশনটি সম্পন্ন হয়। এটি মূলত thread synchronization নিশ্চিত করতে ব্যবহৃত হয় যেখানে একাধিক থ্রেড একই ভ্যারিয়েবলকে অ্যাক্সেস বা পরিবর্তন করতে পারে।


AtomicBoolean এর মূল ধারণা

  • Atomic Operations: AtomicBoolean এর মাধ্যমে boolean ভ্যালুর উপরে এমন অপারেশন করা হয় যা indivisible (অখণ্ড)। একাধিক থ্রেড একযোগে boolean মান পরিবর্তন করতে চেষ্টা করলেও সেগুলি সঠিকভাবে কাজ করবে।
  • Thread Safety: একাধিক থ্রেড যখন একই boolean ভ্যারিয়েবলে কাজ করে, তখন AtomicBoolean এটি সঠিকভাবে পরিচালনা করে এবং thread safety নিশ্চিত করে।
  • Non-blocking: AtomicBoolean ক্লাসটি লক ছাড়া boolean ভ্যালুর মান পরিবর্তন করে, যার ফলে পারফরম্যান্সে কোনো ব্যাঘাত সৃষ্টি হয় না। এটি lock-free (লক-মুক্ত) অপারেশন সরবরাহ করে।
  • State Management: এটি সাধারণত একটি flag বা state indicator হিসেবে ব্যবহৃত হয়, যেখানে একাধিক থ্রেড একটি boolean ভ্যারিয়েবলের মাধ্যমে একটি নির্দিষ্ট অবস্থা চেক বা পরিবর্তন করতে পারে।

AtomicBoolean এর মেথডসমূহ

১. get()

বর্তমান boolean মান রিটার্ন করে।

boolean currentValue = atomicBoolean.get();

২. set(boolean newValue)

নতুন boolean মান সেট করে।

atomicBoolean.set(true);

৩. compareAndSet(boolean expected, boolean newValue)

যদি বর্তমান মান expected এর সমান হয়, তবে সেটি newValue দিয়ে আপডেট করে। এটি atomic check-and-set অপারেশন।

boolean updated = atomicBoolean.compareAndSet(false, true);

৪. getAndSet(boolean newValue)

বর্তমান মানটি রিটার্ন করে এবং একটি নতুন boolean মান সেট করে।

boolean oldValue = atomicBoolean.getAndSet(true);

AtomicBoolean এর ব্যবহার

AtomicBoolean ক্লাসটি বিভিন্ন ধরনের মাল্টি-থ্রেডেড অ্যাপ্লিকেশনে ব্যবহৃত হয়, যেখানে একটি boolean মানের উপর atomic অপারেশন করা প্রয়োজন। এটি সাধারনত flag বা state ট্র্যাক করতে ব্যবহৃত হয়, যেমন একটি lock চেক বা termination condition

উদাহরণ: AtomicBoolean ব্যবহার

import java.util.concurrent.atomic.AtomicBoolean;

public class AtomicBooleanExample {
    public static void main(String[] args) {
        AtomicBoolean atomicFlag = new AtomicBoolean(false);

        // get() ব্যবহার করে মান পড়া
        System.out.println("Initial Value: " + atomicFlag.get()); // Output: false

        // set() ব্যবহার করে মান সেট করা
        atomicFlag.set(true);
        System.out.println("Updated Value: " + atomicFlag.get()); // Output: true

        // compareAndSet() ব্যবহার করে atomic update করা
        boolean updated = atomicFlag.compareAndSet(true, false);
        System.out.println("Was updated: " + updated); // Output: true
        System.out.println("Final Value: " + atomicFlag.get()); // Output: false
    }
}

AtomicBoolean এর সুবিধা

  • Thread-Safe: একাধিক থ্রেড একযোগে boolean মান পরিবর্তন করতে পারলেও এটি নিরাপদ থাকে।
  • Performance Optimization: lock-free অপারেশন থাকার কারণে পারফরম্যান্স উন্নত হয়, বিশেষ করে যখন boolean মানের পরিবর্তন দ্রুত করতে হয়।
  • Race Condition প্রতিরোধ: Atomic অপারেশন ব্যবহার করার কারণে race condition এড়ানো যায়।
  • Simpler Code: লক ব্যবহারের প্রয়োজন ছাড়াই থ্রেড সিঙ্ক্রোনাইজেশন সহজে করা যায়।

AtomicBoolean এর সীমাবদ্ধতা

  • Boolean Value Only: AtomicBoolean শুধুমাত্র boolean টাইপের ডেটার জন্য কাজ করে। এটি reference types বা primitive types এর জন্য কাজ করে না।
  • Limited Operations: এটি কেবলমাত্র boolean মানের পরিবর্তন এবং চেক করার জন্য ব্যবহৃত হয়, সুতরাং এটি কমplex data manipulation বা আরো জটিল অপারেশনের জন্য উপযোগী নয়।

AtomicBoolean এর প্রয়োগ ক্ষেত্রে

  • Flags and States: AtomicBoolean সাধারণত থ্রেডের মধ্যে state management বা flags পরিচালনার জন্য ব্যবহৃত হয়। যেমন, থ্রেডকে একটি নির্দিষ্ট অবস্থায় কাজ করা বা থ্রেডের কাজ বন্ধ করার জন্য একটি সিগন্যাল।
  • Termination Conditions: একাধিক থ্রেডের মধ্যে কাজের সমাপ্তি বা termination চেক করার জন্য AtomicBoolean ব্যবহার করা হয়।
  • Synchronization in Multi-threaded Programs: AtomicBoolean ব্যবহৃত হয় যেখানে একাধিক থ্রেড একযোগে একটি boolean মান চেক বা পরিবর্তন করে এবং সেখানে সঠিক synchronization নিশ্চিত করা প্রয়োজন।

AtomicBoolean হল একটি কার্যকর ক্লাস যা boolean মানের atomic operations পরিচালনার জন্য ব্যবহৃত হয়। এটি মাল্টি-থ্রেডেড প্রোগ্রামিংয়ে thread safety নিশ্চিত করতে সহায়ক এবং performance অপটিমাইজেশনের জন্য উপকারী। এর সাহায্যে race condition প্রতিরোধ করা যায় এবং non-blocking পারফরম্যান্স নিশ্চিত করা যায়।

Content added || updated By
Promotion

Are you sure to start over?

Loading...