简单地解释一下,什么是 Java 中的 Runnable?

用外行的话来说,Java 中的“可运行”是什么?我是一名高中 AP 编程的学生,我的任务是做研究,或者从别人那里寻找什么是“可运行的”(我们刚刚进入面向对象编程,还没有触及线程)。

131599 次浏览

Runnable 基本上是一种类(Runnable 是一个 Interface) ,它可以放到一个线程中,描述线程应该做什么。

可运行接口要求类像下面这样实现方法 run():

public class MyRunnableTask implements Runnable {
public void run() {
// do stuff here
}
}

然后像这样使用它:

Thread t = new Thread(new MyRunnableTask());
t.start();

如果您没有 Runnable接口,则负责在另一个线程中执行您的内容的 Thread 类将无法承诺在您的类中找到 run()方法,因此您可能会得到错误。这就是为什么需要实现接口。

高级: 匿名类型

请注意,您不需要像通常那样定义一个类,您可以在内联中完成所有这些工作:

Thread t = new Thread(new Runnable() {
public void run() {
// stuff here
}
});
t.start();

This is similar to the above, only you don't create another named class.

Runnable是这样定义的接口:

interface Runnable {
public void run();
}

要创建一个使用它的类,只需将该类定义为 (public) class MyRunnable implements Runnable {

It can be used without even making a new Thread. It's basically your basic interface with a single method, run, that can be called.

如果创建一个以 runnable 作为参数的新 Thread,它将在一个新的 Thread 中调用 run 方法。

还应该注意的是,线程实现了 Runnable,并且在生成新线程时(在新线程中)调用这个 Runnable。默认实现只调用您在构造函数中提交的 Runnable,这就是为什么您可以只执行 new Thread(someRunnable)而不重写 Thread 的 run方法。