نقل قول نوشته شده توسط ebrahhimi مشاهده تاپیک
آیا اصلا thread رو ایجاد می کنی؟؟؟
تو Constructor باید یه ترد ایجاد کنی

Thread t;
MyBase(){
t = new Thread(this,"Demo Thread");
System.out.println("Child thread :" + t);
t.start
{
واقعیت اینه که ایجاد کردن یک thread در سازنده‌ی یک کلاس و فراخوانی کردن تابع start اون زیاد کار جالبی نیست. در مثالی که شما نوشتید و در بسیاری از مثال های دیگه ممکنه که این کار هیچ مشکلی به وجود نیاره، ولی بعضی وقت‌ها این کار باعث به وجود آمدن یک باگ در برنامه میشه که پیدا کردنش خیلی خیلی سخته.

اگر threadی که توی سازنده فراخوانی شده از فیلدهای کلاس استفاده کنه ممکنه قبل از اینکه سازنده فرصت پیدا کنه که به این فیلدها مقدار بده، اجرای thread به نقطه‌ای برسه که از این فیلدها استفاده می کنه. در این صورت برنامه با مشکل مواجه میشه.
اگر کسی از این کلاس MyBase یک زیر کلاس بسازه احتمال اینکه این مشکل به وجود بیاد بیشتر میشه، چون وقتی که اجرای thread شروع میشه هنوز سازنده‌ی کلاس فرزند اجرا نشده و فیلدهای کلاس فرزند مقدار دهی نشده هستند.