我相信static main
方法中使用的变量也应该是static
。
问题是我根本无法在此方法中使用 this
。如果我没记错的话,我必须使用 commnad myThread = new ThreaD(this)
启动线程。
下面的代码会产生错误,因为我在线程启动中使用了 this
。
我在这里做错了什么?
package app;
public class Server implements Runnable{
static Thread myThread;
public void run() {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
System.out.println("Good morning");
myThread = new Thread(this);
}
}
最佳答案
不能使用this
,因为main是一个静态方法,this
指的是当前实例,没有。您可以创建一个可传递给线程的 Runnable 对象:
myThread = new Thread(new Server());
myThread.start();
这将导致您在 Server 类的 run 方法中放置的任何内容都由 myThread 执行。
这里有两个独立的概念,Thread 和 Runnable。 Runnable 指定了需要做什么工作,Thread 是执行Runnable 的机制。虽然 Thread 有一个可以扩展的 run 方法,但您可以忽略它并使用单独的 Runnable。
关于java - 如何从 Java 应用程序中的 Main 方法运行线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6878426/