Java多線程的兩種實現方式詳細解釋

第一種實現多線程的方式就是繼承Thread類

class Mythread extends Thread{

private  String name;
public Mythread(String name ){
this.name=name;
}
public void run (){//覆寫Thread中的run方法,然後再用Thread中的start方法進行線程的啓動
for(int x=0;x<10;x++){
System.out println(this.name+",x="+x);
}
}
}
public class TestDemo{
public static void main(String agrs[]){
MyThread m1=new MyThread("線程a"); 
MyThread m2=new MyThread("線程b"); 
MyThread m3=new MyThread("線程c");


        m1.start();
        m2.start();
        m3.start();
}
}
//通過繼承Thread類實現多線程:定義一個實現主類,然後讓這個類繼承Thread父類,這樣就表示此類

//,是一個多線程的處理類,而後線程的主類中必須要覆寫Thread類中的run方法;


第二種方式就是通過Runnable接口實現多線程:(在實際的開發之中,由於單繼承的侷限,這種方法用的也是比較多的)


class MyThread implements Runnable { // 這個是線程的處理主類
         private String name ;// 保存線程的名字
         public MyThread(String name) { // 構造對象傳入名字
         this.name = name ;
         }
@Override
 public void run() { // 線程的主方法,所有的線程由此開始執行

for (int x = 0 ; x < 10 ; x ++) {
     System.out.println(this.name + ", x = " + x);
}
}
}
public class TestDemo {
public static void main(String[] args) {
MyThread mt1 = new MyThread("線程A") ;
MyThread mt2 = new MyThread("線程B") ;
MyThread mt3 = new MyThread("線程C") ;
Thread t1 = new Thread(mt1) ;// Thread 可以接受Runnable的子類對象,利用構造方法傳Runnable進去,
Thread t2 = new Thread(mt2) ;//再調用Thread中的start方法
Thread t3 = new Thread(mt3) ;
t1.start();
t2.start();
t3.start();
}
}
//**需要說明的是雖然第二種看上去和第一種區別不是太大,但是如果Thread是MyThread的父類,
//這樣就可以繼承他的start()方法,但是實現Runnable接口的話,這個時候的MyThread類並沒有start()方法,
//所以這時候如果是想要啓動多線程必須關注Thread中的構造方法:public Thread(Runnable target)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章