2013-04-01 32 views
-3

無法在eclipse中執行此操作。它有什麼特別的原因嗎?在啓用執行選項之前,eclipse是否查找任何特定的內容? 如果下面的代碼被執行,結果會是什麼?它是「1」嗎?無法在eclipse中執行延長Thread與主要方法的類

class A extends Thread { 
    private int i; 
    public void run(){i=1;} 
    public static void main(String[] args) { 
     A a = new A(); a.run();System.out.println(a.i); 
    } 
} 

編輯:只是玩弄繼承和線程。這裏沒有測試特定的線程功能。

+1

錯誤信息是什麼? (順便說一下,它運行得很好:http://ideone.com/himWvk)。 –

+0

我無法在「運行方式」菜單中看到「Java應用程序」。 –

+2

將你的課程公開 –

回答

1

@Hussain是對有關使你的類公開,但我想我會添加一些額外的信息,爲後人。

  • 由於您的代碼現在代表,您不在另一個線程中運行您的代碼。您可以從代碼中刪除extends Thread,它仍然可以正常工作。您的main只是直接調用run()方法,不會調用任何線程魔法。

  • 如果您確實希望您的代碼在另一個線程中運行,那麼您將需要添加a.start();以啓動線程運行並且a.join();等待它完成。在start()方法中,線程被分叉並調用run()方法。

    A a = new A(); 
    // start the thread which calls run() 
    a.start(); 
    // wait for the thread to finish 
    a.join(); 
    System.out.println(a.i); 
    
  • 最後,建議您implements Runnable做,而不是extends Thread。所以,你的代碼看起來像:

    A a = new A(); 
    Thread thread = new Thread(a); 
    // start the thread which calls run() 
    thread.start(); 
    // wait for the thread to finish 
    thread.join(); 
    System.out.println(a.i); 
    
  • 如果你還沒有這樣做之前,我建議你閱讀一tutorial on threads

+0

很好解釋。謝謝格雷。 –

2

所有你需要做的是設置你的類公共

public class A extends Thread { 
    private int i; 
    public void run(){i=1;} 
    public static void main(String[] args) { 
     A a = new A(); a.run();System.out.println(a.i); 
    } 
} 
+0

再次感謝Hussain :) –