多線程的兩種實現方式day04

1.繼承thread類

public class ThreadTest extends Thread {
     public static void main(String[] args) {
         ThreadTest tt=new ThreadTest();
         Thread tt1=new ThreadTest();
         tt.start();
         tt1.start();
    
   }
     @Override
    public void run() {
        // TODO Auto-generated method stub
        for(int i=0;i<1000;i++){
            System.out.println("當前線程是"+Thread.currentThread().getName()+",i="+i);
        }
    } 

}

 

2.實現runnable方法

package com.xujy.thread;

public class ThreadRun implements Runnable {
    public static void main(String[] args) {
        ThreadRun tr=new ThreadRun();
        Thread th=new Thread(tr);
        Thread th1=new Thread(tr);
        th.start();
        th1.start();
    }

    @Override
    public void run() {
        // TODO Auto-generated method stub
        for(int i=0;i<1000;i++){
            System.out.println("當前線程是"+Thread.currentThread().getName()+",i="+i);
        }
    }

}

    
}

3.比較不同
1、當使用繼承的時候,主要是爲了不必重新開發,並且在不必瞭解實現細節的情況下擁有了父類我所需要的特徵。它也有一個很大的缺點,那就是如果我們的類已經從一個類繼承,則無法再繼承 Thread 類,
2、java只能單繼承,因此如果是採用繼承Thread的方法,那麼在以後進行代碼重構的時候可能會遇到問題,因爲你無法繼承別的類了,在其他的方面,兩者之間並沒什麼太大的區別。
3、implement Runnable是面向接口,擴展性等方面比extends Thread好。
4、使用 Runnable 接口來實現多線程使得我們能夠在一個類中包容所有的代碼,有利於封裝,它的缺點在於,我們只能使用一套代碼,若想創建多個線程並使各個線程執行不同的代碼,則仍必須額外創建類,如果這樣的話,在大多數情況下也許還不如直接用多個類分別繼承 Thread 來得緊湊。

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