#C کلید ورود به بازار کار

دوره پروژه‌محور #C و ASP.NET Core

C#
C#
مقالات برنامه نویسی
آموزش 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
مقاله قبلی
آموزش Java - استفاده از static synchronization در Java multithreading
مقاله بعدی
آموزش Java – تبادل اطلاعات بین thread ها یا Inter-thread communication در جاوا (synchronization و multithreading)
نظرات شما

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