Methods: get(), set(), compareAndSet() গাইড ও নোট

Web Development - অ্যাটমিক্স (Atomics) - Atomic Arrays
333

AtomicReferenceArray Java এর একটি ক্লাস যা atomic operations সহ reference arrays পরিচালনা করার জন্য ব্যবহৃত হয়। এটি java.util.concurrent.atomic প্যাকেজের অংশ, যা মাল্টি-থ্রেডেড প্রোগ্রামিংয়ে ব্যবহৃত হয় এবং থ্রেড-সেফ ডেটা অপারেশন সমর্থন করে।

এই ক্লাসে বিভিন্ন গুরুত্বপূর্ণ মেথড আছে, যেগুলি ডেটা এক্সেস ও আপডেট করার সময় থ্রেড-সেফনেস নিশ্চিত করে। এখানে get(), set(), এবং compareAndSet() মেথডগুলোর বিস্তারিত আলোচনা করা হলো।


১. get(int index) Method

get() মেথড একটি নির্দিষ্ট index থেকে অ্যারের মান পড়ে। এটি একটি থ্রেড-সেফ অপারেশন, অর্থাৎ একাধিক থ্রেড একই অ্যারের একাধিক উপাদান পড়লেও ডেটা সঠিকভাবে রিটার্ন হবে।

সিনট্যাক্স:

public E get(int index)

প্যারামিটার:

  • index: অ্যারের index যার মান আপনি পড়তে চান।

রিটার্ন:

  • রিটার্ন করে index তে থাকা মান (যে ধরনের অবজেক্ট অ্যারে ধারণ করে)।

উদাহরণ:

AtomicReferenceArray<String> atomicArray = new AtomicReferenceArray<>(5);
atomicArray.set(0, "Hello");
atomicArray.set(1, "World");

String value = atomicArray.get(0);
System.out.println(value); // আউটপুট: Hello

২. set(int index, E newValue) Method

set() মেথড একটি নির্দিষ্ট index তে নতুন মান সেট করে। এই অপারেশনটি atomic এবং থ্রেড-সেফ, অর্থাৎ একাধিক থ্রেড একই সময় একই index এ মান সেট করতে পারবে না।

সিনট্যাক্স:

public void set(int index, E newValue)

প্যারামিটার:

  • index: অ্যারের index যেখানে মানটি সেট করতে চান।
  • newValue: নতুন মান যা index তে সেট করা হবে।

উদাহরণ:

AtomicReferenceArray<String> atomicArray = new AtomicReferenceArray<>(5);
atomicArray.set(0, "Hello");
atomicArray.set(1, "World");

// নতুন মান সেট করা
atomicArray.set(0, "Hi");
System.out.println(atomicArray.get(0)); // আউটপুট: Hi

৩. compareAndSet(int index, E expect, E update) Method

compareAndSet() একটি atomic অপারেশন যা নির্দিষ্ট index তে expect মানের সাথে তুলনা করে এবং যদি তা মেলে তবে update মান সেট করে। এটি একটি compare-and-swap (CAS) অপারেশন। এটি মাল্টি-থ্রেডেড প্রোগ্রামিংয়ে race condition প্রতিরোধে সহায়ক।

সিনট্যাক্স:

public boolean compareAndSet(int index, E expect, E update)

প্যারামিটার:

  • index: অ্যারের index যেটিতে আপনি কাজ করতে চান।
  • expect: যেই মানটি index তে উপস্থিত থাকতে হবে, যাতে update মান সেট করা যাবে।
  • update: নতুন মান যা expect এর সাথে মিললে index এ সেট হবে।

রিটার্ন:

  • true: যদি index তে expect মান মিলে যায় এবং তা সফলভাবে update হয়।
  • false: যদি index তে expect মান না মেলে এবং কোন আপডেট না হয়।

উদাহরণ:

AtomicReferenceArray<String> atomicArray = new AtomicReferenceArray<>(5);
atomicArray.set(0, "Hello");

boolean isUpdated = atomicArray.compareAndSet(0, "Hello", "Hi");
System.out.println("Updated: " + isUpdated); // আউটপুট: Updated: true
System.out.println(atomicArray.get(0)); // আউটপুট: Hi

// যদি মান না মেলে
boolean isUpdatedFailed = atomicArray.compareAndSet(0, "World", "Java");
System.out.println("Updated: " + isUpdatedFailed); // আউটপুট: Updated: false

get(), set(), এবং compareAndSet() এর মধ্যে পার্থক্য

  • get() শুধুমাত্র অ্যারের নির্দিষ্ট index তে থাকা মান পড়ে এবং কোনো পরিবর্তন করে না।
  • set() নির্দিষ্ট index তে একটি নতুন মান সেট করে এবং এটি সরাসরি ডেটাকে আপডেট করে।
  • compareAndSet() প্রথমে একটি expect মানের সাথে তুলনা করে, যদি তা মেলে তবে update মান সেট করা হয়। এটি একটি তুলনা এবং পরিবর্তন (CAS) অপারেশন যা thread-safety নিশ্চিত করে এবং race condition প্রতিরোধে ব্যবহৃত হয়।

AtomicReferenceArray মেথডগুলি যেমন get(), set(), এবং compareAndSet() মাল্টি-থ্রেডেড প্রোগ্রামিংয়ে thread-safe অ্যারের অপারেশন সঞ্চালনে অত্যন্ত কার্যকর।

  • get() মান পড়ে,
  • set() মান আপডেট করে,
  • compareAndSet() সুনির্দিষ্ট মানের সাথে তুলনা করে এবং শুধু তখনই সেট করে যখন পূর্বের মান মেলে।

এগুলি atomic operations প্রদান করে, যা অ্যারে-এ ডেটার সঠিকতা এবং সুরক্ষা নিশ্চিত করে, বিশেষত যখন একাধিক থ্রেড একই অ্যারে ব্যবহার করে।

Content added By
Promotion

Are you sure to start over?

Loading...