2011-08-02 46 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 

    } 
}