چه موقع از thread استفاده کنیم و چه موقع از Timer?
دوستان سوالی که برام پیش اومده اینه که چه هنگام استفاده از thread درسته و چه وقتی استفاده از timer? به عنوان مثال تو یه مورد خاص اگه در یک اکتویتی قرار باشه که به کاربر 60 ثانیه مهلت داده بشه متنی روببینه و بعد از اون به یه اکتیویتی دیگه ارجاع داده بشه،(به طوریکه کاربر کاری روی UI انجام نده فقط در خلال این زمان، بتونه به صفحه بعد بره مثلا تو ثانیه 30اُم) آیا استفاده از timer بهتر نیست؟ (نکته ای که من رو در مورد thread نگران میکنه و برام پیش اومده اینه که بعضی وقت ها عملیات های منطقی رو غلط انجام میده) و نکته دیگه اینکه بالاخره گذاشتن تابع Timer در جاوا حتما دلیل خاصی داره وگرنه چرا باید هم thread وجود داشته باشه هم Timer?
شما باید قبل از هرچیز معنی ترد رو بدونید < که ترد یعنی چی ؟ این اصطلاح چی هست ؟ و یا اصطلاحی مثل مولتی تردینگ یعنی چی
ببینید سی پی یو I7 چهار هسته واقعی داره < اما همزمان میتونه 8 پروسه رو پردازش کنه < دلیلش این هست که هر هسته یک ترد جاداگانه داره < درواقع یک سی پی یو I7 چهار هسته و چهار ترد داره <
(اگر اموزش های استاد رو دیده باشید و توضیحاتی که در باره ترد اونجا داده میشه)تفاوت عمده thread که میتونه با timer (البته من از تایمر اطلاعاتی ندارم و تابحال استافده نکردم) داشته باشه این هست که ترد در عین واحد به برنامه شما اجازه میده سایر متد ها و کلاس ها هم پردازش بشوند < و خروجی بدهند < در حالی که اگر از ترد استفاده نمیشد < و برای مثال شما یک حلق While داشته باشید < تا زمانی که کار این حلقه تموم نشده < برنامه شما اجازه پردازش دیگر خطوط سورس کد رو نداره < و در واقع شما میبینید که برنامه حالتی شبیه به قفل شدن داره < و اگر شما روی برنامه کلیک کنید متد OnclickListener اجرا نمیشه < چون برنامه شما تماما در حال پردازش اون حلقه هست <
من پیشنهاد میکنم < هر موقع میخواهید از ترد استفاده کنید < ببینید واقعا دستورات شما به پردازش جداگانه نیاز داره ؟ < پردازشی که به برنامه (یا حالا شاید کامپایلر ، من اطلاعات زیادی ندارم !) اجازه بده سایر خطوط سورس کد شما نیز مورد پردازش قرار بگیره
برای مثال : همون طور که Sprit گفتد < فرض کنید برنامه شما نیاز به دریافت اطلاعات از سرور شما داشته باشه < اگر سرعت ارتباط پایین و میزان حجم دریافتی بالا باشه < و شما از ترد استفاده نکنید < برنامه شما حالت قفل شده پیدا میکنه تا زمانی که ارتباط برنامه با سرور تمام بشه <
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .