কম্পিউটার টিউটোরিয়াল

জাভায় অবজেক্ট লেভেল লক ও ক্লাস লেভেল লকের পার্থক্য

মাল্টিথ্রেডিং এনভায়রনমেন্টে দুটি বা ততোধিক থ্রেড শেয়ার্ড রিসোর্সের সাথে সিমালটেনিয়াসলি এক্সেস করতে পারে যা সিস্টেমের ইনকনসিস্টেন্ট বিহেভিয়রের দিকে পরিচালিত করতে পারে। জাভা লক (locks) কনসেপ্ট ব্যবহার করে শেয়ার্ড রিসোর্স বা অবজেক্টের কনকারেন্ট এক্সেস রস্ট্রিক্ট করে। লক দুটি লেভেলে প্রয়োগ করা যায়:

  • অবজেক্ট লেভেল লক (Object Level Locks): এটি তখন ব্যবহার করা হয় যখন আপনি চান নন-স্ট্যাটিক মেথড বা নন-স্ট্যাটিক কোড ব্লক শুধু একটি থ্রেড দ্বারা এক্সেস করা উচিত।
  • ক্লাস লেভেল লক (Class Level Locks): এটি তখন ব্যবহার করা হয় যখন আমরা চাই রানটাইমে উপলব্ধ সব ইনস্ট্যান্সের যেকোনো সিনক্রোনাইজড ব্লকে মাল্টিপল থ্রেড এন্টার করতে না পারুক। এটি সবসময় স্ট্যাটিক ডেটা থ্রেড-সেফ করতে ব্যবহার করা উচিত।
Sr. No. Key Object Level Lock Class Level Lock

1

Basic

নন-স্ট্যাটিক মেথড বা ব্লক শুধু একটি থ্রেড দ্বারা এক্সেসIBLE হবে তা নিশ্চিত করতে ব্যবহৃত হয়

রানটাইমে সব ইনস্ট্যান্সের সিনক্রোনাইজড ব্লকে মাল্টিপল থ্রেড এন্টার না করতে দিতে ব্যবহৃত হয়

2

Static/Non Static

নন-স্ট্যাটিক ডেটা থ্রেড-সেফ করতে সবসময় ব্যবহৃত হয়

স্ট্যাটিক ডেটা থ্রেড-সেফ করতে সবসময় ব্যবহৃত হয়

3

Number of Locks

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

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

Class Level Lock উদাহরণ

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

Object Level Lock উদাহরণ

public class ObjectLevelLockExample {
    public void objectLevelLockMethod() {
        synchronized (this) {
            // DO your stuff here
        }
    }
}
  1. জাভাতে ইনহেরিটেন্স এবং কম্পোজিশনের পার্থক্য

  2. জাভাতে ReentrantLock এবং Synchronized-এর পার্থক্য

  3. জাভাতে Thread এবং Runnable-এর পার্থক্য

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