2011-08-02 44 views
0

我有一個帶有線程的非常簡單的程序。假設我希望線程在一些代碼之後啓動(即在程序中間)。我如何實現這一目標?如何在main()中創建線程

當我嘗試在代碼(下面給出的代碼)後面的main()中啓動線程時,它顯示錯誤:非靜態變量,不能從靜態上下文中引用。

public class Main { 

    public class MyThread implements Runnable { 

     public void run() { 
     //do something 
     } 
    } 

    Thread t1 = new Thread (new MyThread()); 

    public static void main(String[] args) { 
     // some code 
     t1.start(); 
     //some code 
    } 
} 

任何人都可以告訴我如何糾正錯誤。

在此先感謝您的幫助。

回答

4

如果您不需要訪問您mainThread變量之外,那麼正確的解決辦法是簡單地用一個局部變量:

public static void main(String[] args) { 
    // some code 
    Thread t1 = new Thread (new MyThread()); 
    t1.start(); 
    //some code 
} 

否則,你要麼需要使t1static讓非靜態方法內運行的代碼(即創建main類的實例,做你的實際工作的方法您電話main)。

4

我想你想從主函數內實例化你的線程,因爲它是一個靜態函數。

public class Main { 

public class MyThread implements Runnable { 

    public void run() { 
    //do something 
    } 
} 
    public static void main(String[] args) { 
     Thread t1 = new Thread (new MyThread()); 

     // some code 
     t1.start(); 
     //some code 

    } 
}