آشنایی با مفهوم Multi Threading در زبان برنامه نویسی جاوا | هستی پروژه

آشنایی با مفهوم Multi Threading در زبان برنامه نویسی جاوا – قسمت اول

در این پست تیم هستی پروژه قسمت اول آموزش زبان برنامه نویسی جاوا که در مورد مبانی multi threading هست را برای شما کاربران عزیز فراهم کرده است.

Multi Threading چیست ؟ اجرای همروند نخ ها که به صورت اشتراکی انجام می شود.

multi Threading در سیستم های چندپردازنده ای که به صورت واقعی همروندی را پیاده سازی می کنند و در سیستم های تک پردازنده ای این کار به صورت شبیه سازی شده انجام می گیرد.مثلا وقتی یک نخ نمی تواند پردازش شود (بعنوان مثال برای منتظر ماندن عملیات I/O) , نخ دیگری از پردازنده استفاده می کند.

مثال دیگر نرم افزار دانلود فایل است . زمانی که فایل ویدیویی بزرگی را دانلود می کنیم به چند نخ تبدیل می شود و هرنخ به صورت جداگانه دانلود می شود و می توانیم همزمان ویدیو را play کنیم در حالی که نخ دیگر آن مشغول دانلود است و فقط نخ دانلود شده اجرا می گردد.

JVM مامور ساخت و اجرای Thread ها می باشند. مثلا خواندن چند کتاب به صورت Multi Thread و خواندن هر سطر از هرکدام و سوییچ به کتاب بعدی در حالی که باید محل فعلی بخش مطالعه ی هرکتاب را در ذهن داشته باشیم.به این گونه است که همروندی برای مغز انسان دشوار است.

جاوا دارای یک سری کلاس های از پیش تعریف شده است که کار ما را راحت تر می کند و همچنین هر نخ یک چرخه ی حیات دارد. جاوا بیشتر جزییات پیاده سازی را برای ما مخفی می کند.

در شکل زیر نموداری از نحوه ی ارتباط اجزای ایجادکننده ی Thread نمایش داده شده است :

نخی که در ناحیه ی Runnable هست Task را برای ما اجرا می کند. بعضی وقت ها نخ به ناحیه ی waiting می رود تا منتظر اجرای بقیه ی نخ ها شود و فقط زمانی به Runnable برمی گردد که بقیه ی نخ ها به آن نخ Notify دهند. در Timed waitng هم مشابه waiting هست و محدوده ی زمانی interval هم برای آن وجود دارد که توسط Runnable نخی وارد sleep می شود  با یک interval خاص و بعد از انقضای آن بازمی گردد.یک مثال از این حالت سیستم backup گیری ادر پردازش متن هست که باعث استفاده ی بهینه و موثر از Cpu و بالابردن کارایی می شود.

در بخش Block Thread نیز وقتی runnable نخ را وارد این بخش می کند که نخ نتواند به سرعت تکمیل شود و باید منتظر تکمیل یک وظیفه بماند. مثلا وقتی یک درخواست I/O وارد می شود سیستم عامل نخ را تا زمانی که عملیات I/O کامل شود Block می کند. یک نخ Block شده نمی تواند از پردازنده استفاده کند.

در ناحیه ی Terminated که به آن Dead State نیز می گویند وقتی که تسک با موفقیت تکمیل شد یا در بعضی اوقات با یک error مواجه شد وارد این بخش می شود که با علامت دایره ی توپر نمایش می دهند.

در جاوا ما فقط Runnable را میبینیم و بقیه ی امور از دید ما پنهان است اما در سیستم عامل بخش های دیگری از قبیل ready , running , کوانتوم زمانی و dispatch کردن وجود دارد.

پردازشی که سیستم عامل انتخاب می کند کدام نخ اجرا شود را انتخاب اولویت (Thread Scheduling) گفته می شود.

 

در قسمت های بعدی بیشتر در مورد جزییات multi threading و همچنین برنامه نویسی در آن خواهیم پرداخت.

 

resources: Java – How to program 9e – Deitel – Deitel

 

دیدگاه خود را به ما بگویید.