{CodeGate}

thread pool در جاوا (MultiThreading in Java)

در این آموزش تیم کدگیت را با آموزش thread در جاوا همراهی کنید.  در آموزش قبل به معرفی synchronized و مشکل thread در به اشتراک قرار دادن یک متغیر پرداختیم. این جلسه به توضیح thread pool در جاوا خواهیم پرداخت. پیش نیازهای این آموزش:

  1. Thread در جاوا
  2. synchronized

Thread pool در جاوا

در آموزش های قبل یک thread ساختیم.و نشان دادیم چطور یک task(عملیات) را با استفاده از Runnable در جاوا پیاده سازی میکنند.

روش گفته شده برای تک task (عملیات) مناسب است ولی برای تعداد بالای thread به هیچ عنوان مناسب نیست فرض کنید بخواهید 100بار  thread را اجرا کنید باید 100 بار  thread را به صورت جداگانه اجرا کنید!!! شروع یک thread جدید برای هر کار(task) می تواند محدودیت و باعث عملکرد ضعیف شود. استفاده از thread pools، یک راه مناسبی است برای مدیریت چند thread، که میخواهند همزمان اجرا شوند.(pool به معنی استخر است پس thread pool معنای استخری از thread میدهد)

جاوا برای اجرای thread در thread pool یک interface معرفی کرده است به نام Executor. برای مدیریت threadها یک interface دیگری معرفی کرده است به نام ExecutorService.

برای ساخت Executor از متد Executors که Static هم است استفاده میکنند.متد (newFixedThreadPool(int برای ساخت تعداد ثابت thread در thread pool استفاده میشود.

در بالا ما یک thread pool ساختیم که دارای دو thread است. در زیر یک مثال از thread pool آمده است.

کد بالا تقریبا همه آن آموزش داده شده به جز دو متد:

  1. shoutdoun: این متد به executor اطلاع میدهد که اصطلاحا خاموش شود و دیگر thread را نپذیرد ولی آن threadهایی که قبل از shoutdown اضافه شدند به کار خود ادامه میدهند تا موقعی که تمام شوند.
  2. Execute: یک thread را میسازد و به thread pool اضافه میکند برای اجرا شدن.

برنامه بالا دو thread را میسازد و همزمان اجرا میکند. قبل ما مسئول شروع thread و کنترل آن بودیم ولی الان thread pool این کار را برای ما انجام میدهد. خروجی برنامه چاپ نام threadهای در حال اجرا است. هر thread به تعداد 10000 بار نام خود را چاپ میکند.

پسورد: www.codegate.ir

 

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

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

نظر شما چیست؟

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

wpDiscuz