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

آموزش Java – وضعیت Deadlock در مبحث synchronization Java

آموزش Java – وضعیت Deadlock در مبحث synchronization Java

در جاوا (Java) Deadlock بخشی از مبحث پردازش موازی (multithreading) و مدیریت دسترسی thread ها به منابع یا همان synchronization است. Deadlock که معادل فارسی آن بن بست می باشد به شرایطی اشاره دارد که در آن چند thread می خواهند به یک منبع دسترسی داشته باشند، هر thread بر روی منبع مورد نظر lock اعمال کرده و تا اتمام عملیات آن را برنمی دارد. در این میان thread دیگری منتظر است که کار thread قبلی تمام شده، قفل را بردارد تا این thread بتواند به آن منبع دسترسی داشته باشد. از آنجایی که هر دو thread متنظرند تا دیگری قفل را از روی منبع برداشته و آن را آزاد کند، به این وضعیت deadlock گفته می شود.


آموزش Java

نمونه ی واقعی از رخداد وضعیت deadlock در Java

public class TestDeadlockExample1 {  
public static void main(String[] args) {  
final String resource1 = "ratan jaiswal";  
final String resource2 = "vimal jaiswal";  
// t1 tries to lock resource1 then resource2  
Thread t1 = new Thread() {  
public void run() {  
synchronized (resource1) {  
System.out.println("Thread 1: locked resource 1");  
try { Thread.sleep(100);} catch (Exception e) {}  
synchronized (resource2) {  
System.out.println("Thread 1: locked resource 2");  
}  
}  
}  
};  
// t2 tries to lock resource2 then resource1  
Thread t2 = new Thread() {  
public void run() {  
synchronized (resource2) {  
System.out.println("Thread 2: locked resource 2");  
try { Thread.sleep(100);} catch (Exception e) {}  
synchronized (resource1) {  
System.out.println("Thread 2: locked resource 1");  
}  
}  
}  
};  
t1.start();  
t2.start();  
}  
}  

خروجی:

Thread 1: locked resource 1
Thread 2: locked resource 2
1396/08/21 3022 1227
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

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