{CodeGate}

بن بست در جاوا (DeadLock in Java)

در این جلسه تیم کدگیت را با آموزش بن بست در جاوا (Dead Lock) همراهی کنید. پیش نیاز های این آموزش شامل موارد زیر است:

  1. آشنایی با thread
  2. آشنایی با inner class
  3. آشنایی با synchronized
  4. آشنایی با استثناها
  5. آشنایی با final

بن بست (DeadLock)

بن‌بست (به انگلیسی: Deadlock) در علوم رایانه، در محیط‌های چندبرنامگی، بن‌بست به حالتی گفته می‌شود دو یا چند کار پردازشی منتظر پایان کار یکدیگر هستند در حالی کارشان به پایان نرسد. در این حالت، پردازش‌های مختلف در حالی که منتظر گرفتن منبع هستند، منابع مورد نیاز آن‌ها توسط سایر پردازش‌های منتظر نگه‌داشته شده‌است و توانایی اختصاص منابع به هیچ یک از پردازش‌ها وجود نداشته باشد. در یک بن‌بست، پردازش‌ها به پایان نمی‌رسند و منابع سیستم گره می‌خورند که حتی سایر پردازش‌ها را برای شروع کار منع می‌شوند (ویکیپدیا).

بن بست در جاوا

بن بست در جاوا

برای پیاده سازی بن بست در جاوا ما از دو thread استفاده میکنیم. این دو thread در خودشان از بلاک synchronized استفاده کرده اند. کد بن بست در جاوا به صورت زیر است:

همانطور که میبینید ما دو متغیر به نام resource1 و resource2 ساختیم و در بلاک synchronized قرار دادیم. هر thread به ازای دو متغیر گفته شده یک بلاک synchronized دارد که مجموعا میشود دو بلاک برای هر thread. برنامه بالا هیچوقت تمام نمیشود!! زیرا هر دو thread با هم شروع میشوند و فرض کنید thread اول و دوم وارد بلاک اول شود حال هر دو متغیر گفته شده lock شدند و در عین حال طبق کد ما در بلاک دوم هر کدام از threadها منتظر یکدیگرند!!!!

پسورد: www.codegate.ir

 

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

دیدگاه بگذارید

نظر شما چیست؟

مطلع کردن شما از
avatar

wpDiscuz