在一个简单易懂的解释中,Java中的Runnable是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (26)

用通俗的话来说,Java中的“runnable”是什么?我是高中的AP编程学生,他的任务是从事研究,或从别人那里寻找“可运行”的内容(我们正在进入OOP,尚未触及线程)。

提问于
用户回答回答于

一个Runnable基本上是一个类(Runnable是一个接口),可以放入一个线程,描述该线程应该做什么。

Runnable接口要求的类的实现方法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();

这与上面类似,只有你不创建另一个命名类。

用户回答回答于

Runnable 是一个定义如下的接口:

interface Runnable {
    public void run();
}

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

它甚至可以在没有新的线程的情况下使用。它基本上是一个可以调用的单一方法的基本接口。

如果你创建一个带有runnable的新线程作为它的参数,它将在一个新线程中调用run方法。

还应该注意的是,线程实现Runnable,并且在新线程(在新线程中)时被调用。默认的实现只是调用你在构造函数中递交的任何Runnable,这就是为什么你可以在new Thread(someRunnable)不重写Thread的run方法的情况下做到这一点。

扫码关注云+社区