web-dev-qa-db-ja.com

わかりやすい説明で、JavaでRunnableとは何ですか?

素人の言葉で、Javaの「実行可能」とは何ですか?私は高校のAPプログラミングの学生であり、その任務は研究を行うか、「実行可能」とは何かを探すことです(OOPを始めたばかりで、まだスレッドに触れていません)。

83
user1809295

Runnableは基本的に、スレッドに入れることができるクラスのタイプ(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();

これは上記と似ていますが、別の名前付きクラスを作成しないでください。

165
opatut

Runnableは、次のように定義されたインターフェイスです。

interface Runnable {
    public void run();
}

それを使用するクラスを作成するには、クラスを(public) class MyRunnable implements Runnable {として定義するだけです

新しいスレッドを作成しなくても使用できます。基本的に、呼び出すことができる単一のメソッドrunを備えた基本的なインターフェイスです。

パラメータとしてrunnableを使用して新しいスレッドを作成すると、新しいスレッドでrunメソッドが呼び出されます。

また、スレッドはRunnableを実装し、新しいスレッドが(新しいスレッドで)作成されるときに呼び出されることにも注意してください。デフォルトの実装は、コンストラクタで渡したRunnableを呼び出すだけです。そのため、スレッドのrunメソッドをオーバーライドせずにnew Thread(someRunnable)を実行することができます。

8
Alex Coleman