以下
class ThreadDemo extends Thread{
public void run(){
//job of a thread
}
public static void main (String[] args){
ThreadDemo d = new ThreadDemo();
d.start();
}
}
start()
とjvm
を直接呼び出すことで、run()
メソッドを呼び出すことができます。あなたのクラスでそれをオーバーライドすることによってrun()
のスレッドのefineの仕事。 しかし、以下のようにRunnable(I)
を実装してスレッドを作成するとします。
class ThreadDemo implements Runnable{
public void run(){
//job of Thread
}
public static void main(String[] args){
ThreadDemo d = new ThreadDemo(); //d.start() is not possible
Thread t = new Thread(d);//where d is target runnable
t.start()
}
}
Runnable(I)
だけrun()
メソッドが含まれているため、あなたがThread
作成時にThread
インスタンスにごThreadDemo
インスタンスを渡す必要がありますので、それはあなたのtarget Runnable instance
を初期化し、Thread
ないRunnable
run()
メソッドを呼び出して、ThreadDemo
インスタンスに直接start()
を呼び出すカントクラスrun()
メソッド。
ThreadDemo d = new ThreadDemo(); //d.start() is not possible
Thread t = new Thread(d);//where d is target runnable
t.start()
_に似て
は "1は新しいスレッドでRunnableを新たに書き込みを行う理由を誰も説明していただけますか?" _ https://docs.oracle.com/javase/tutorial/を参照してください。 essential/concurrency/runthread.html – Michael