آشنایی با مفهوم Thread در زبان برنامه‌نویسی جاوا


در این آموزش یکی از مباحث بسیار مهم در زبان برنامه‌نویسی جاوا تحت عنوان Thread را معرفی کرده و مقدمه‌ای از کاربرد آن در اجرای تَسک‌های نوشته‌شده در برنامه‌های جاوا را تشریح می‌کنیم. به طور کلی، می‌توان گفت که تِرِدها دارای کاربردهای فراوانی هستند که از آن جمله می‌توان به توسعۀ گیم، اپلیکیشن‌های تحت وب و غیره اشاره کرد (جهت کسب اطلاعات بیشتر در رابطه با نحوۀ اجرای برنامه به صورت مالتی‌تِرِد به مقالۀ آشنایی با مفاهیم Thread ،Process و نحوۀ کارکرد Multithreading مراجعه نمایید.) در واقع، زمانی از تِرِدها در پروسهٔ توسعهٔ نرم‌افزار استفاده می‌کنیم که بخواهیم برنامه‌ای طراحی کنیم تا در آن بیش از یک کار را به طور هم‌زمان پیش ببریم که برای این منظور نیز کلاسی تحت عنوان Thread در زبان برنامه‌نویسی جاوا تعبیه شده است.

حال برای درک بهتر مفهوم تِرِدها، مثالی را مد نظر قرار می‌دهیم بدین صورت که وقتی یک فایل ویدئویی را به صورت آنلاین تماشا می‌کنیم، نیازی نیست تا صبر کنیم تا فایل کاملاً بارگذاری شود بلکه پخش ویدئو شروع شده و هم‌زمان با نمایش ویدئو بارگذاری بخش‌های دیگر آن نیز انجام می‌شوند. به عبارت دیگر، دو کار نمایش ویدئو و بارگذاری آن به صورت هم‌زمان صورت می‌گیرند که این موضوع دقیقاً به کاربرد تِرِدها در پیشبرد دو تَسک به صورت هم‌زمان اشاره دارد.

در حقیقت، به طور خلاصه می‌توان گفت که با استفاده از تِرِدها می‌توانیم نرم‌افزاری طراحی کنیم تا به جای انتظار برای تکمیل انجام یک کار سپس آغاز کار بعدی، هر دو کار به صورت هم‌زمان پیش روند که اهمیت چنین مسئله‌ای در توسعهٔ گیم دو چندان می‌گردد. از سوی دیگر، تِرِدها صرفاً در بازی‌سازی کاربرد نداشته و در حوزۀ اپلیکیشن‌های تحت وب و دسکتاپ نیز کاربردهای فراوانی دارند. به طور مثال، فرض کنیم که یک اپلیکیشن تحت وب با زبان جاوا طراحی کرده‌ایم که در نقش یک وب سرور بوده و وظیفۀ هندل کردن بیش از یک ریکوئست (درخواست) در آنِ واحد را دارا است که این کار به سادگی با استفاده از مفهوم تِرِدها در زبان جاوا امکان‌پذیر می‌باشد.

حال در ادامه قصد داریم تا ببینیم که چگونه می‌توان به صورت عملی یک تِرِد در زبان برنامه‌نویسی جاوا ایجاد کرد و اجرای برنامه‌ها با استفاده از چند تِرِد چه مزایایی دارا است. به طور کلی، می‌توان گفت که پیاده‌سازی تِرِدها در زبان برنامه‌نویسی جاوا به دو روش مختلف امکان‌پذیر می‌باشد که عبارتند از:

- روش اول بدین صورت است که کلاسی ایجاد کرده سپس کلاس مذکور ویژگی‌های خود را از کلاس Thread در زبان جاوا به ارث می‌برد. 
- در روش دوم کلاسی ایجاد کرده و آن را از روی اینترفیسی تحت عنوان Runnable ایمپلیمنت می‌کنیم که در چنین شرایطی می‌توانیم بدون ارث‌بری از کلاس Thread اقدام به ساخت تِرِد نماییم.

در ادامۀ این آموزش و به منظور درک سازوکار تِرِدها، هر دو روش را مورد بررسی قرار خواهیم داد.

این بخش از محتوا مخصوص کاربرانی است که ثبت‌نام کرده‌اند.
جهت مشاهدهٔ این بخش از محتوا لاگین نمایید.

در این آموزش به بررسی کاربرد تِرِدها در اجرای برنامه پرداخته و نحوۀ ایجاد یک تِرِد با به‌کارگیری دو روش مختلف در زبان برنامه‌نویسی جاوا را آموختیم و دیدیم که چگونه می‌توان با استفاده از هر یک از روش‌های مذکور برنامه‌ای را پیاده‌سازی کرد که به صورت مالتی‌تِرِد اجرا شود.

دانلود فایل‌های تمرین


بهزاد مرادی

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
ashkan
ashkan
۱۳۹۶/۰۱/۱۹
با این‌که ‌همه آموزش هارو‌سریع فهمیدم. این آموزش رو به کلی نفهمیدم. اگر روش اول و دوم و جداگونه از اول با توضیحات پایه ای میومدید جلو بهتر بود. اصلا هیچی‌متوجه نشدم
کاربر میهمان
شهریاریمن یک کاربر مهمان هستم
۱۳۹۵/۱۰/۰۶
بسیار عالی و روان و دقیق. خدا خیرت بده داداش.
کاربر میهمان
parisaمن یک کاربر مهمان هستم
۱۳۹۵/۰۹/۰۹
آموزشاتون فوق العاده و روانه
ممنون بابت تمامي زحماتتون
کاربر میهمان
alirezaمن یک کاربر مهمان هستم
۱۳۹۵/۰۵/۱۷
ممنون بایت زحماتتون
عیسی پور
عیسی پور
۱۳۹۴/۱۰/۲۷
ممنون از آموزش خوبتون
در ابتدای این آموزش بعد از ایجاد پروژه 53 ام فرمودید کلاسی تحت عنوان MyThread باید ایجاد کنیم که صحیحش "ThreadA " باید باشه.
کاربر میهمان
mosioمن یک کاربر مهمان هستم
۱۳۹۴/۱۰/۰۳
سلام. اول تشکر میکنم به خاطر آموزش بسیار عالی و بسیار روانی که ارائه داده اید.
سوالی که دارم در مورد @Override می باشد. من طبق دستورات شما اقدام به ایجاد Thread کردم ولی خطايي و یا پيغامی مبنی بر نیاز داشتن به @Override را به من نشان نداد و برنامه به درستي اجرا شد!
میخواستم بدون این عدم نیاز به @Override علت خاصی دارد ؟ یا اینکه این دستور optional است؟
با تشکر از شما
bijan9
bijan9
۱۳۹۴/۰۹/۲۳
that was perfect . thank you.