java, جاوا, همزمانی در جاوا (MultiThreading)

مانیتور در جاوا (MultiThreading in Java)

مانیتور در جاوا

اگر شما درس سیستم عامل را در دانشگاه خوانده باشید حتما به یاد دارید که مانیتور ها یکی از موضوعات مهم در همزمانی سیستم عامل است.در جاوا نیز مانیتورها استفاده میشود. در این تیم کدگیت را با  آموزش مانیتور در جاوا همراهی کنید.

مانیتور چیست؟

مانیتور را میتوان یک خانه در نظر گرفت با یک اتاق مخصوص. این اتاق مخصوص فقط میتواند یک مشتری(thread) را در خود جای دهد. این اتاق معمولا شامل تعدادی خط کد یا مجموعه ای از داده ها است.

اگر یک مشتری بخواهد وارد اتاق مخصوص بشود اول باید به اتاق پذیرایی خانه برود. بعد از مدتی که نوبت به او رسید به اتاق انتظار میرود. در اتاق انتظار نیز همانطور که اسمش معلوم است باید منتظر بماند تا نوبتش برسد. بعد از که نوبش رسید میتواند وارد اتاق مخصوص شود. به طور خلاصه مانیتور یک قابلیتی است که به thread ها اجازه میدهد به اطلاعات خاص دسترسی یا بدون مزاحمت فرآیند خاصی را اجرا کنند و هیچ thread دیگری وارد نخواهد شد. در تصویر زیر میتوانید کل توضیحات داده شده را ببینید.

مانیتور در جاوا

در ماشین مجازی جاوا هر شی (object) یا کلاس، منطقا یک مانیتور همراه خود دارد.برای پیاده سازی انحصار متقابل مانیتور در جاوا فقط کافی است lock که همراه هر شی یا کلاس است را استفاده کنید. به این قابلیت در کتابهای سیستم عامل ، سمافور نیز میگویند.

اگر ناحیه ای دارید که میخواهید فقط یک thread در آن استفاده شود و بدون هیچ مزاحمتی باشد، جاوا کلمه کلیدی synchronized را به وجود آورده است. هر جای برنامه شما از این کلمه کلیدی استفاده شود خود جاوا کار مانیتور را در آن ناحیه انجام میدهد.

کد مانیتور در جاوا

حال ما میدانیم تمام اشیا و کلاس ها در جاوا همراه با مانیتور هستند.شاید هم بهتر باشد بگوییم هر شی یک مانیتور دارد.هر شی میتواند ناحیه بحرانی خود را داشته باشد و قابلیت کنترل آنها را نیز دارد. برای استفاده از مانیتور هر شی متدی به نام wait دارد که میتوانید از آن استفاده کنید. متد notify نیز برای آزاد کردن ناحیه بحرانی است (در جلسات گذشته مثالهایی درباره این متدها زده شده است).

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *