سؤال

أواجه مشكلة غريبة للغاية. أنا أعمل على مهمة تتضمن بناء محاكاة للأرقام التي تتحرك على "لوحة الشطرنج" ثنائية الأبعاد. يتم تمثيل كل رقم بواسطة كائن ينفذ واجهة Runnable. المشكلة هي أنه عندما أحاول تشغيل كل كائن في مؤشر ترابط مختلف مثل ذلك:

    ArrayList< Thread > playerThreads = new ArrayList< Thread >();
    ArrayList< Player > players = p.getSpawnedPlayers(); // This method returns all Runnable objects
    for ( Player pl : players )
        playerThreads.add( new Thread( pl ) );

    for ( Thread pt : playerThreads )
    {
        pt.run();
    }

لسبب ما ، تبدأ الخيط الأول فقط. وأنا متأكد تمامًا من هذا ، تبدو طريقة Run () لفئة المشغل مثل هذا:

public void run()
{
    System.out.println( "Player " + this.hashCode() + " starts moving..." );
    ...
}

أحصل على الإخراج فقط من كائن واحد. أي فكرة لماذا هذا يحدث؟

هل كانت مفيدة؟

المحلول

لبدء موضوع يجب أن تتصل به pt.start(), ، ليس pt.run(). انظر Javadoc للحصول على جميع التفاصيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top