জাভা ভার্চুয়াল মেশিনের ভিতরে থেকে উদ্ধৃতি
জাভা ভার্চুয়াল মেশিনের একটি থ্রেড কোনও মনিটর অঞ্চলের শুরুতে এসে পৌঁছানোর সময় লকটির অনুরোধ করে। জাভাতে, দুই ধরণের মনিটরের অঞ্চল রয়েছে: সিঙ্ক্রোনাইজড স্টেটমেন্ট এবং সিঙ্ক্রোনাইজড পদ্ধতি।
নিরীক্ষণ
একটি মনিটর এমন বিল্ডিংয়ের মতো যাতে একটি বিশেষ কক্ষ থাকে যা একবারে কেবল একটি থ্রেড দ্বারা দখল করা যায়। ঘরে সাধারণত কিছু তথ্য থাকে। কোনও থ্রেড এই ঘরে thisোকার সময় পর্যন্ত এটির ঘরে কোনও ডেটাতে একচেটিয়া অ্যাক্সেস রয়েছে। মনিটরের বিল্ডিংয়ে ুকতে "মনিটরে প্রবেশ করা" বলা হয়। ভবনের অভ্যন্তরে বিশেষ কক্ষে প্রবেশ করাতে "মনিটর অর্জন করা" বলা হয়। ঘর দখলকে বলা হয় "মনিটরের মালিক," এবং ঘরটি ছেড়ে "মনিটর ছেড়ে দেওয়া" বলা হয়। পুরো বিল্ডিং ছেড়ে যাওয়ার জন্য "মনিটর থেকে বেরিয়ে আসা" বলা হয়।
কিছুটা ডেটা যুক্ত হওয়ার সাথে সাথে, একটি মনিটর কোডের এক বা একাধিক বিটের সাথে যুক্ত, যা এই বইয়ে মনিটর অঞ্চল হিসাবে পরিচিত হবে।
পূর্বে উল্লিখিত হিসাবে, ভাষাটি আপনার প্রোগ্রামগুলিতে মনিটরের অঞ্চলগুলি সনাক্ত করতে দুটি অন্তর্নির্মিত উপায় সরবরাহ করে: সিঙ্ক্রোনাইজড স্টেটমেন্ট এবং সিঙ্ক্রোনাইজড পদ্ধতিগুলি। এই দুটি প্রক্রিয়া, যা সিঙ্ক্রোনাইজেশনের পারস্পরিক বর্জনীয় দিকটি বাস্তবায়িত করে, জাভা ভার্চুয়াল মেশিনের নির্দেশনা সেট দ্বারা সমর্থিত।
লক
মনিটরের পারস্পরিক বর্ধন ক্ষমতা বাস্তবায়নের জন্য, জাভা ভার্চুয়াল মেশিন প্রতিটি বস্তু এবং শ্রেণীর সাথে একটি লক (কখনও কখনও মিউটেক্স নামে পরিচিত) সংযুক্ত করে। একটি লক একটি বিশেষাধিকারের মতো যা কেবল একবারে একটি থ্রেড যে কোনও সময়ে "নিজের" করতে পারে।
একক থ্রেডকে একই বস্তুকে একাধিকবার লক করার অনুমতি দেওয়া হয়েছে। প্রতিটি বস্তুর জন্য, জাভা ভার্চুয়াল মেশিনটি কতবার লক হয়ে গেছে তার একটি গণনা বজায় রাখে। একটি আনলক করা অবজেক্টের শূন্যের গণনা রয়েছে। যখন কোনও থ্রেড প্রথমবারের জন্য লকটি অর্জন করে, তখন গণনাটি আবার একটিতে বাড়ানো হয়। প্রতিবার থ্রেড একই বস্তুর উপর একটি লক অর্জন করলে, গণনা আবার বাড়ানো হয়।