Javaスレッドの2つの実装形式
2952 ワード
一、スレッドを作成する第一の方法:Threadクラスを継承する
二、スレッドを作成する第二の方法:Runnableインタフェースを実現する
Runnableの出現はスレッドのタスクをオブジェクトのカプセル化しただけである.
Runnableインタフェースのメリット:
1、スレッドのタスクをスレッドのサブクラスから分離し、個別のカプセル化を行う.対象に向かう考えに従ってタスクを対象にカプセル化する.
2、Javaシングル継承の限界を回避
したがって、第2の方法では、スレッドを作成するのが一般的です.
class Demo extends Thread{
@Override
public void run() {
super.run();
for(int i=0;i<20;i++)
System.out.println(Thread.currentThread()+"...."+i);
}
}
public class ThreadDemo1 {
public static void main(String[] args){
Demo d1 = new Demo();
Demo d2 = new Demo();
d1.start();
d2.start();
}
}
二、スレッドを作成する第二の方法:Runnableインタフェースを実現する
class Demo2 implements Runnable{
public void run() {
for(int i=0;i<20;i++)
System.out.println(Thread.currentThread()+"..."+i);
}
}
public class ThreadDemo2 {
public static void main(String[] args) {
Thread t1 = new Thread(new Demo2());
Thread t2 = new Thread(new Demo2());
t1.start();
t2.start();
}
}
Runnableの出現はスレッドのタスクをオブジェクトのカプセル化しただけである.
Runnableインタフェースのメリット:
1、スレッドのタスクをスレッドのサブクラスから分離し、個別のカプセル化を行う.対象に向かう考えに従ってタスクを対象にカプセル化する.
2、Javaシングル継承の限界を回避
したがって、第2の方法では、スレッドを作成するのが一般的です.