کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش Java – استفاده از monitor reentrant یا قفل های قابل استفاده ی مجدد در Java

آموزش Java – استفاده از monitor reentrant یا قفل های قابل استفاده ی مجدد در Java

طبق گفته های شرکت Sun Microsystems، قفل یا monitor های جاوا reentrant هستند، بدین معنی که اگر متدی از داخل متدی دیگر که synchronized هست، فراخوانی شود، thread می تواند از همان monitor برای هر دو متد استفاده کند.

مزیت استفاده از Reentrant monitor در Java

از رخداد deadlock در یک برنامه ی تک thread ای جلوگیری می کند (single thread deadlocking). به عبارت دیگر اجازه نمی دهد یک thread خود را در وضعیت deadlock قرار دهد.

در زیر مثالی را مشاهده می کنید که در آن مفهوم reentrant monitor به صورت عملی نمایش داده شده است:

class Reentrant {  
public synchronized void m() {  
n();  
System.out.println("this is m() method");  
}  
public synchronized void n() {  
System.out.println("this is n() method");  
}  
}  

در این کلاس متدهای m() و n() هر دو synchronized هستند. متد m() متد n() را داخل خود صدا می زند.


در نمونه ی زیر متد m() را بر روی آبجکت thread فراخوانی می کنیم. در کلاس جاری، آبجکت thread را با استفاده از کلاس فاقد نام (anonymous) ایجاد می کنیم.

public class ReentrantExample{  
public static void main(String args[]){  
final ReentrantExample re=new ReentrantExample();  
Thread t1=new Thread(){  
public void run(){  
re.m();//calling method of Reentrant class  
}  
};  
t1.start();  
}}  

خروجی:

this is n() method
this is m() method
1396/08/21 3615 1654
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...