Runnable
1301 ワード
JavaではRunnableインタフェースを実装することでマルチスレッドを実装することもでき、Runnableインタフェースでは抽象的な方法を定義しています.
public void run();
【Runnableインタフェースによるマルチスレッド化】
クラス名implements Runnable{
属性...;
方法...;
public void run(){//Runnableインタフェースのrun()メソッドの上書き
スレッド本体;
}
}
例:
結果:
スレッドA運転、i=0スレッドB運転、i=0スレッドB運転、i=1スレッドB運転、i=2スレッドB運転、i=3スレッドB運転、i=4スレッドB運転、i=5スレッドB運転、i=6スレッドB運転、i=7スレッドB運転、i=8スレッドB運転、i=9スレッドA運転、i=1スレッドA運転、i=2スレッドA運転、i=3スレッドA運転、i=4スレッドA運転、i=5スレッドA運転、i=6スレッドA運転、i=7スレッドA運転、i=8スレッドA運転、i=9
誰が先にCPUを強盗して先に誰を実行しても、その方式にかかわらず、最終的にはThreadクラスに頼ってスレッドを起動しなければならない.
Threadの欠点は単に継承することしかできないことです
Runnableインタフェースは継承の欠陥、、、特性を補う
public void run();
【Runnableインタフェースによるマルチスレッド化】
クラス名implements Runnable{
属性...;
方法...;
public void run(){//Runnableインタフェースのrun()メソッドの上書き
スレッド本体;
}
}
例:
package ThreadDemo01;
class MyThread1 implements Runnable {
private String name;
public MyThread1(String name) {
this.name = name;
}
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(name + " ,i=" + i);
}
}
}
public class RunnableDemo01 {
public static void main(String args[]) {
MyThread1 mt1 = new MyThread1(" A");// Runnable
MyThread1 mt2 = new MyThread1(" B");// Runnable
Thread t1 = new Thread(mt1);// Thread
Thread t2 = new Thread(mt2);// Thread
t1.start();//
t2.start();
}
}
結果:
スレッドA運転、i=0スレッドB運転、i=0スレッドB運転、i=1スレッドB運転、i=2スレッドB運転、i=3スレッドB運転、i=4スレッドB運転、i=5スレッドB運転、i=6スレッドB運転、i=7スレッドB運転、i=8スレッドB運転、i=9スレッドA運転、i=1スレッドA運転、i=2スレッドA運転、i=3スレッドA運転、i=4スレッドA運転、i=5スレッドA運転、i=6スレッドA運転、i=7スレッドA運転、i=8スレッドA運転、i=9
誰が先にCPUを強盗して先に誰を実行しても、その方式にかかわらず、最終的にはThreadクラスに頼ってスレッドを起動しなければならない.
Threadの欠点は単に継承することしかできないことです
Runnableインタフェースは継承の欠陥、、、特性を補う