Java多线程: how does thread creation with Runnable interface work?

标签 java multithreading runnable

有人能解释一下这段代码的作用吗? new Thread(new X()).start();

其余代码:

class X implements Runnable {
    X() {}
    }
    public static void main(String[] arg) {
        new Thread(new X()).start();
    }
}

最佳答案

这是一个非常简单的示例,它展示了如何创建一个新线程并运行它。当您在 Java 中创建新线程时,您给它们一些事情可做 - “Runnable”。

class X implements Runnable

该接口(interface)只有一个方法 - run()。因此,您创建一个新线程,并在其构造函数中添加一个可运行的线程。

new Thread(new X())

创建新线程后,必须使用 start() 方法启动它。这是它调用可运行对象的 run() 方法的时候。在您的示例中,这在线程构造之后刚刚被链接:

new Thread(new X()).start();

现在,这个示例很不寻常,因为类 X 实际上并未实现 run 方法。但通常情况下,会有额外的部分,因此您的示例将如下所示:

class X implements Runnable {
    public void run() {
        System.out.println("This is running on a different thread!");
    }

    public static void main(String[] arg) {
        new Thread(new X()).start();
    }
}

关于Java多线程: how does thread creation with Runnable interface work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34951725/

相关文章:

java - JSONParser 无法解析为类型

java - Producer.send 不接受 KeyedMessage 类型

multithreading - 在多处理器和多核系统上不可分割的操作仍然不可分割吗?

java - ScheduledExecutorService - 忽略已经运行的可运行对象

java - Java 中的 "implements Runnable"与 "extends Thread"

java - Timer多次添加某个TableRow

java - java中如何将String数组改为ArrayList

java - 在 EAR 中的多个 war 中共享公共(public) jsp

windows - 为什么我要使用 "Both"COM 线程模型而不是 "Free"?

java - Java 中的多消费者生产者