خیلی ساده بخوام توضیح بدم !من اصلا با نخها آشنایی ندارم و نمیدانم این نخ اصلی کجاست! (همان تابع main است؟ که مسلما نیست... جایی از برنامه من هم که واژه thread ندارد که من بخواهم بررسیاش کنم... )
هر برنامه ای که شما در سیستم عامل اجرا میکنید درون یک پردازه قرار میگیره که داخل همین پردازه یک نخ اصلی وجود داره که وظیفه کنترل برنامه و المانهای گرافیکی و خیلی چیزهای دیگه را داره!
و دقیقا تابع main برنامه محل نخ اصلی برنامه هم هست.
نه ربطی نداره! بحث تامین منابع سخت افزاری نخ ها به عهده سیستم عامل و پردازشگر هست بنابراین استفاده از نخ ها نمیتونه بر روی تامین منابع سخت افزاری نخ های دیگر برنامه ویا نخ اصلی برنامه خللی وارد کنه!۱- آیا این چند نخ کاری، باعث افت قدرت کار در نخ اصلی نمیشود؟ (یعنی ما تنها از نخ دوم انتظار داریم چند تا جعبه متنی را به روز رسانی کند... ولی یک باره نمیآید ۳۰-۴۰ درصد از قدرت نخ اصلی را بگیرد؟)
البته در صورتی که در استفاده از نخ ها دچار زیاده روی شوید قطعا در کارایی برنامه تاثیر خواهد گذاشت
خیر دوست عزیز! ربطی به جاوا نداره تمامی محیط های برنامه نویسی همینطور هستند یعنی نرم افزاری که در این زبانها تولید میشه یک نخ اصلی دارند در یک پردازه اصلی۲- آیا این نقص جاوا (کتابخانههای موجود جاوا swing) نیست که این کارها را خودشان به عهده نمیگیرند و باید برایشان برنامه اضافه نوشت؟ البته من در ترازی نیستم که اصلا بخواهم در این باره اظهار نگر کنم... ولی به نگرم اینها باید تنها با یک فعال یا غیر فعال کردن یک متغیر ساده (یک آرگومان) خود به خود انجام میشد... باید در نرمافزارهای ادیتور (netbeans) یک همچنین چیزی به صورت بصری گنجانده میشد... که آیا دوست داری این خودکار مقادیرش تغییر کند؟ در چه بازهای دوست داری؟ در هنگام انجام کلیه توابع؟ یا در هنگام انجام چند تابع خاص؟ و ... احتمالا نوشتنش سخت هم نیست! نمیدانم چرا همچنین چیزی را انجام ندادهاند...
اینکه شما می فرمایید که بایک فعال و غیر فعال کردن متغیر باید انجام میشد؟! تا حالا به غیر از جاوا تو کدوم محیط برنامه نویسی کردید که چنین استنباطی کردید؟ به هرحال حتی محیطهای برنامه نویسی قدیمی هم که single thread apartement بودند هم باز یک نخ اصلی داشتند فقط مشکلی که داشتند این بود که از چند نخی پشتیبانی نمیکردند.
بنابراین وقتی بخواهید با المانهای گرافیکی فرمهایی که دارید در ارتباط باشید باید در همان نخ صاحب المان همون نخ اصلی برنامه در تعامل باشید مثلا برای کاری که شما می خواهید انجام بدید حتما هم لازم نیست که از نخ های دیگه ای استفاده کنید می تونید در همون نخ اصلی هم عملیات هایی که لازم دارید انجام بدید یعنی امکان اضافه کردن عملیاتها ویا فرآیندهایی در زمان اجرا به نخ اصلی وجود دارد. ولی خیلی روش بهینه ای نخواهد بود.
ودر آخر هم همانطور که خودتون گفتید بهتره کمی درباره نخ ها مطالعه داشته باشید و سعی کنید مثالهای مختلف راهم انجام بدید فقط توجه داشته باشید که به علت پیچیدگی هایی که در برنامه نویسی چند نخی و همزمانی و موازی سازی وجود داره سعی کنید که کم کم به این مباحث و تکنیک ها آشنایی پیدا کنید