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

آموزش Java – پردازش موازی/Multithreading در Java

آموزش Java – پردازش موازی/Multithreading در Java

Multithreading (تقسیم برنامه به پردازش های موازی مجزا) فرایندی است که طی آن چند thread به صورت مجزا اما همزمان اجرا می شوند.

Thread یک subprocess کم حجم (lightweight) بوده و در واقع کوچک ترین واحد پردازش محسوب می شود. Multiprocessing یا Multithreading هر دو برای پیاده سازی مفهوم multitasking و انجام چند عملیات مختلف در آن واحد بکار می روند.

در آموزش حاضر بجای multi-processing از multithreading برای دستیابی به قابلیت نام برده استفاده خواهیم کرد چراکه thread ها همه از یک ناحیه ی مشترک حافظه (memory area) استفاده کرده، در نتیجه میزان حافظه ی کمتری را اشغال می کنند. علاوه بر آن پریدن از thread به thread ای دیگر (context-switching) برای پردازنده ی کامپیوتر نسبت به تعویض بین process ها زمان کمتری را به خود اختصاص می دهد.

Java Multithreading (پردازش موازی در Java)

پردازش موازی مبحث پیچیده ای است که بیشتر در بازی ها و پیاده سازی انیمیشن کاربرد دارد.

مزایای استفاده از پردازش موازی در Java(Multithreading)

  1. برنامه کاربر را منتظر نمی گذارد (مسدود نمی کند) چرا که thread ها مستقل از یکدیگر بوده و شما می توانید چندین عملیات را به موازت هم به اجرا بگذارید بدون اینکه پردازش عملیات مورد نظر متوقف شود.
  2. می توانید عملیات مختلفی را به موازات هم به اجرا بگذارید بنابراین کار با سرعت بیشتری انجام می شود.
  3. thread ها از یکدیگر مستقل هستند بنابراین رخداد خطا در یک thread مانع اجرای سایر thread ها نمی شود.

انجام وظایف مختلف به موزات هم/شرح مفهوم Multitasking

Multitasking عبارت است از فرایندی که طی آن چندین عملیات یا وظیفه به طور همزمان اجرا می شوند. با بهره گیری از Multitasking می توان نهایت استفاده را از قدرت و امکانات پردازنده داشت. Multitasking به دو روش زیر قابل پیاده سازی می باشد:

  • multi tasking مبتنی بر process (multiprocessing)
  • multi tasking مبتنی بر thread (Multithreading)

multi tasking مبتنی بر process (multiprocessing)

  • هر process آدرس اختصاصی خود را در حافظه دارد بدین معنی که یک فضای مجزا از حافظه را اشغال می کند.
  • process برخلاف thread، سنگین و هزینه بر می باشد.
  • هزینه ی تبادل اطلاعات بین process ها سنگین است.
  • جابجایی بین process ها برای پردازنده زمان بر می باشد. به عبارت دیگر به مقدار زمان بیشتری برای ذخیره و بارگذاری محتوای حافظه ی (register) CPU، memory map، بروز رسانی لیست ها و غیره ... نیاز دارد.

multi tasking مبتنی بر thread (Multithreading)

  • thread ها از یک فضای واحد و مشترک حافظه (address space) استفاده می کنند.
  • thread بسیار سبک و کم هزینه است.
  • هزینه ی تبادل اطلاعات بین thread ها ناچیز است.
نکته:

thread ها داخل process ها جای می گیرند و بدون process هیچ thread ای ایجاد نمی شود. بنابراین تمامی thread ها بایستی داخل process تعریف شوند.

شرح مفهوم (پردازه) thread در جاوا

Thread یک subprocess سبک و در واقع کوچکترین واحد پردازش است.

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

آموزش Java

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

نکته:

در آن واحد تنها یک thread اجرا می شود.

1396/08/05 3770 1716
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

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