Java 线程 : How does implementing runnable work for threading

标签 java multithreading

我知道如果你想要线程,你可以扩展线程或者在 java 中实现可运行到多线程。但是为什么非要实现一个接口(interface)让java去线程呢?使 Java 线程工作的可运行接口(interface)的重要性是什么? Java 的接口(interface)是否从某物扩展而来?

最佳答案

Runnable 接口(interface)的唯一特殊之处在于它是Thread 在其构造函数中采用的内容。它只是一个普通的旧界面。

与大多数接口(interface)一样,要点是您正在根据契约(Contract)进行编程:您同意将要运行的代码放入Runnable#run() 实现中,并且 Thread 同意在另一个线程中运行该代码(当您使用它创建并启动 Thread 时)。

Thread 实际上是“执行”多线程(因为它与 native 系统交互)。 Runnable 的实现就是放置要告诉 Thread 运行的代码。

事实上,您可以实现一个 Runnable 并运行它,而无需让它在单独的线程中运行:

Runnable someCode = new Runnable() {
    public void run() {
       System.out.println("I'm a runnable");
    }
};
someCode.run();

所以Runnable本身与多线程没有任何关系,它只是在对象中封装一段代码时扩展的标准接口(interface)。

关于Java 线程 : How does implementing runnable work for threading,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12966044/

相关文章:

java - 无法从另一个java程序运行一个java程序

java - java中读取jar外部的xml文件

java - 静态方法中的泛型

java - 如何创建一个树状结构,其中有不同类型的节点,并且每个节点可以引用任何节点?

java - 当我没有运行额外的线程时出现 ConcurrentModificationException

java - 如何计算查询和文档之间的相似度?

multithreading - 使用更多线程时 OpenMP 性能最差(遵循 openMP 教程)

c# - Monitor.PulseAll 的正确用法?

python - 在 python 中稍后杀死线程

c - C语言中输入数值时如何将光标移动到鼠标位置?