آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

ایجاد یک اشاره گر به چند شی در حلقه

مسعود فرمانی  10 سال پیش  10 سال پیش
0 0

سلام دوستان

در تیکه کد زیر آیا 91 عدد Thread Object ایجاد میشه و pointer همشونم thread هست؟؟!!! البته نمیشه گفت چون به صورت محلی تعریف شده با هربار اجرای حلقه،قبلیه از بین میره..عمدا از کلاس Thread استفاده کردم چون که میدونیم همه اونا با هم در حالت Runnable هستند و وظایفشون یکی در میون در حال اجراست پس از بین نرفتند!! اگر امکان داره لطفا کامل توضیح بدید چه اتفاقی میوفته..به جای نقطه ها فرض کنید ادامه کدهاست :)

 for(int i = 0 ;i<91;i++){
Thread thread = new Thread();
.
.
.
.
}

0 0
هدف شما از این سوال چیه و میخواین به چه چیزی برسین (10 سال پیش)
0 0
اول اینکه میخوام ببینم آیا درسته که یک اشاره گر به همه این object ها بوجود میاد؟؟ دوم اینکه اگه اره چطور ممکنه؟ و اگه نه پس چه اتفاقی میفته؟؟چون من یک نام اشاره گر بیشتر استفاده نکردم و از آرایه هم برای ذخیره object ها استفاده نکردم پس چجوریه داستان؟؟؟؟ (10 سال پیش)
0 0
استاد این موضوع رو توضیح دادن در بخش Thread، با این دستور با هر بار اجرای حلقه یک Object از Thread ایجاد میشه که هیچ ربطی به قبلی نداره و دستورات خودشو اجرا میکنه حالا اگه Runnable همشون یکی باشه اونوقت هست که شرایط خاصی بوجود می آید مثلا اگه تمام این Runnable ها بخوان یک فیلد رو تغییر بدن یا عملی روش انجام بدن اونجاست که برخورد بوجود میاد که خودش یک مشکل بزرگ هست (10 سال پیش)
0 0
خب این مشخصه که object های جدید بوجود میان که ربطی به هم ندارن ولی من منظورم در مورد اشاره گری بود که به این object ها اشاره میکنه نه وظایفشون!!مثلا در یک arrayAdapter با توجه به اندازه صفحه نمایش چندین بار layout inflate میشه و هر بار توی متد getView یک pointer به اسم convertView به هرکدوم اشاره میکنه...حالا سوال من توی این مثال هایی که زدم اینه که چطور ممکنه چند pointer نام یکسانی داشته باشند؟؟ (10 سال پیش)
0 0
این امکان میتونه وجود داشته باشه چون اگه بخوایم از نظر حافظه نگاه کنیم که این اشاره گر های هم نام چطور تشخیص داده میشن خب تمام این اشاره گر ها در حافظه به یک آدرس یا سلول مشخص در حافظه اشاره میکنن که هر کدوم واسه خودشون آدرس یکتای دارن در مورد مدیریت حافظه یه مطالعه بکنید امیدوارم تونسته باشم کمک کنم (10 سال پیش)
0 0
تا موقعی که gc صدا نشه حافظه اختصاص یافته از بین نمیره .... در اصطلاح اینا گم میشن ... و قطعا به اون شی دسترسی ندارید (10 سال پیش)
0 0
زمانیکه از ترد در حلقه استفاده کنید به تعداد مورد نظر که در حلقه ذکر شده شی Thread ایجاد میشه که ربطی به هم هم ندارند و زمانی Thread از بین خواهد رفت که وظیفش به پایان برسه . (10 سال پیش)
+1 0
البته با احترام به نظر آقای کاشی زاده و دوستان اضافه کنم که ممکنه Thread بوجود آمده در زمان اتمام کارش هم از بین نره. بهتر اینه که خودمون مدیریتی بر حافظه گرفته شده داشته باشیم و آدرس اونها رو گم نکنیم. (مثلا با استفاده از یک List یا... ) و زمانی که کارشون تموم شد، خودمون اون Thread رو با استفاده از thread.destroy از حافظه پاک کنیم. اینطوری راندمان کار سیستم حفظ خواهد شد. البته همونطوری که دوستان اشاره فرمودند اگه کد نویس این کار رو نکنه، خود سیستم عامل هم اکثر اوقات در نتیجه سعی در آزاد سازی هرچه بیتشر حافظه داره، این کار رو انجام میده. (که این ضعف کد نویسی ما رو نشون میده) (10 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .