素人の言葉で、Javaで「実行可能」とは何ですか?私は高校のAPプログラミング学生です。その割り当ては、研究を行うか、「実行可能」が何であるかを他の人から探し出します(まだOOPに入っており、まだスレッドに触れていません)。
素人の言葉で、Javaで「実行可能」とは何ですか?私は高校の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();
これは上記に似ていますが、別の名前付きクラスは作成しません。
run
メソッドが終了するまで実行され、その後スレッドが閉じられます。スレッドを繰り返し実行する場合は、run
メソッド内にループを配置します。
new Thread(() -> System.out.println("hello from other thread")).start();
Runnable
そのように定義されたインターフェースです:
interface Runnable {
public void run();
}
それを使用するクラスを作成するには、クラスを次のように定義するだけです (public) class MyRunnable implements Runnable {
新しいスレッドを作成することなく使用できます。基本的には、実行可能な単一のメソッドrunを持つ基本的なインターフェースです。
パラメータとしてrunnableを使用して新しいスレッドを作成すると、新しいスレッドでrunメソッドが呼び出されます。
スレッドはを実装しRunnable
、新しいスレッドが(新しいスレッドで)作成されるときに呼び出されることにも注意してください。デフォルトの実装では、コンストラクターで渡したRunnableを呼び出すだけなのでnew Thread(someRunnable)
、Threadのrun
メソッドをオーバーライドせずに実行できます。
Thread
スレッドプーリングを拡張することが困難で、スレッドプーリングを実装しない場合は、常に新しいスレッドを作成するという多大なコストがかかります。対照的に、実装Runnable
するだけでThreadPoolExecutorService
、サードパーティのスレッドプールなどを簡単に使用できます。