java - 如何从 Java 应用程序中的 Main 方法运行线程?

标签 java multithreading java-threads

我相信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/

相关文章:

java - 查询 HQL 查询结果时 PersistentBag.toString() stackoverflow 错误

java - 使用DriverManager测试数据库连接(java)

java - 为什么这段代码没有像 JSR133 所建议的那样进入无限循环?

其他线程不可见的java实例变量

java - 缅因州 JFrame 类中的外部 JPanel 类未正确显示

java - 如果我们有足够的处理器来服务所有线程,Thread.yield() 会做任何事情吗?

java - 安全的 JMS 队列连接 jboss

java - 无法找到主类

linux - epoll()、互斥量和信号量之类的系统调用是如何在后台实现的?

java - 如何防止线程在条件暂时不满足时被终止?