কম্পিউটার

জাভাতে অবজেক্ট লেভেল লক এবং ক্লাস লেভেল লকের মধ্যে পার্থক্য


মাল্টিথ্রেডিং পরিবেশে, দুই বা ততোধিক থ্রেড একই সাথে শেয়ার্ড রিসোর্স অ্যাক্সেস করতে পারে যা সিস্টেমের অসামঞ্জস্যপূর্ণ আচরণের নেতৃত্ব দিতে পারে। জাভা শেয়ার্ড রিসোর্স বা বস্তুর সমসাময়িক অ্যাক্সেস সীমাবদ্ধ করতে লকের ধারণা ব্যবহার করে। তালা দুটি স্তরে প্রয়োগ করা যেতে পারে -

  • অবজেক্ট লেভেল লক − যখন আপনি নন-স্ট্যাটিক পদ্ধতি বা কোডের নন-স্ট্যাটিক ব্লক শুধুমাত্র একটি থ্রেড দ্বারা অ্যাক্সেস করতে চান তখন এটি ব্যবহার করা যেতে পারে।
  • ক্লাস লেভেল লক − যখন আমরা একাধিক থ্রেডকে রানটাইমে উপলভ্য সকল ক্ষেত্রে সিঙ্ক্রোনাইজড ব্লকে প্রবেশ করতে বাধা দিতে চাই তখন এটি ব্যবহার করা যেতে পারে। স্ট্যাটিক ডেটা থ্রেড নিরাপদ করতে এটি সর্বদা ব্যবহার করা উচিত।
Sr. না.
কী
অবজেক্ট লেভেল লক
ক্লাস লেভেল লক

1

মৌলিক

এটি ব্যবহার করা যেতে পারে যখন আপনি নন-স্ট্যাটিক পদ্ধতি বা কোডের নন-স্ট্যাটিক ব্লক শুধুমাত্র একটি থ্রেড দ্বারা অ্যাক্সেস করা উচিত

এটি ব্যবহার করা যেতে পারে যখন আমরা একাধিক থ্রেডকে সিঙ্ক্রোনাইজড ব্লকে প্রবেশ করতে বাধা দিতে চাই যেকোনও উপলব্ধ দৃষ্টান্তে রানটাইমে

2

স্ট্যাটিক/নন স্ট্যাটিক

এটি সর্বদা নন-স্ট্যাটিক ডেটা থ্রেড নিরাপদ করতে ব্যবহার করা উচিত।

স্ট্যাটিক ডেটা থ্রেড নিরাপদ করতে এটি সর্বদা ব্যবহার করা উচিত।


3

তালার সংখ্যা

ক্লাসের প্রতিটি বস্তুর নিজস্ব লক থাকতে পারে

ক্লাসের একাধিক অবজেক্ট থাকতে পারে কিন্তু সবসময় একটি ক্লাসের ক্লাস অবজেক্ট লক পাওয়া যায়

ক্লাস লেভেল লকের উদাহরণ

public class ClassLevelLockExample {
   public void classLevelLockMethod() {
      synchronized (ClassLevelLockExample.class) {
         //DO your stuff here
      }
   }
}

অবজেক্ট লেভেল লকের উদাহরণ

public class ObjectLevelLockExample {
   public void objectLevelLockMethod() {
      synchronized (this) {
         //DO your stuff here
      }
   }
}

  1. জাভাতে উত্তরাধিকার এবং রচনার মধ্যে পার্থক্য

  2. ReentrantLock এবং জাভাতে সিঙ্ক্রোনাইজডের মধ্যে পার্থক্য

  3. জাভাতে থ্রেড এবং রানেবলের মধ্যে পার্থক্য

  4. জাভাতে অবজেক্ট লেভেল লক বনাম ক্লাস লেভেল লক?