threads competition
سلام و خسته نباشید به شما
سوال من در بخش برنامه نویسی همزمانی و قسمت 3 (threads competition) است . همان طور که در عکس میبیند شما متد updatePercents را در بدنه خودش و در متد run فراخوانی کرده اید . این فراخوانی چطور است که برنامه دچار خطا نمی شود چون متد مرتبا توسط خودش فراخوانی میشود و شرطی برای پایان ندارد. main thread چطور این متد را اجرا می کند که برنامه به درستی کار میکند و اینکه پایان main thread چه موقع اتفاق می افتد ؟

بخاطر وجود PostDelayed
این کلاس باعث میشه که در بازه ی زمانی ای که تعریف کرده ایم ، دوباره به حلقه ( یا هر دستور دیگری بربگرده ) لذا در اینجا بعد از هر یک ثانیه یکبار درحال آپدیت کردن UI هست و با هربار چک کردن حلقه ، درصدی که در دستورات بالا پشرفت داشته را بر روی ProgressBar ست میکنه و UI رو اپدیت میکنه.
همچنین اینکه این متد توسط مین ترد فراخوانی شده. ( شک دارم ، اگه اینطور نیست بگید تا اصلاح کنم).
متوجه شدم بخاطر اینکه اون متد توسط PostDelayed هر چندثانیه یکبار خودش رو اپدیت میکنه ، حتی پس از اتمام پروسه و رسیدن به 100 درصد باز هم این متد که تبدیل به یک لوپ نامحدود شده ، در حال اجرا هست. و بنظرم استفاده از همچین موردی توی پروژه های بزرگ دردسرساز میشه. باید یک انتهایی براش بزاریم.
برای این منظور ویدیویی ضبط کردم که ببینیم پس از 100 درصد باز هم در حال اجرا هست.
لینک دانلود ویدیو
حجم:1,375 KB
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .