109

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

4

2 回答 2

204

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();

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

于 2012-11-11T00:50:17.567 回答
10

Runnable是这样定义的接口:

interface Runnable {
    public void run();
}

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

它甚至可以在不创建新线程的情况下使用。它基本上是您的基本界面,只有一个可以调用的方法 run。

如果你创建一个新的线程,它的参数是runnable,它会在一个新的线程中调用run方法。

还应该注意 Threads 实现Runnable,并且在创建新线程时调用(在新线程中)。默认实现只是调用您在构造函数中提交的任何 Runnable,这就是为什么您可以在new Thread(someRunnable)不覆盖 Threadrun方法的情况下执行此操作。

于 2012-11-11T00:50:57.643 回答