教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

Thread類實(shí)現(xiàn)多線程的優(yōu)點(diǎn)是什么?怎樣實(shí)現(xiàn)多線程

更新時(shí)間:2023年09月11日16時(shí)59分 來(lái)源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

Thread類是iava.lang下的一個(gè)線程類,用來(lái)實(shí)現(xiàn) Java多線程。通過(guò)繼承Thread類的方式來(lái)實(shí)現(xiàn)多線程非常簡(jiǎn)單,主要步驟如下:

(1)創(chuàng)建一個(gè) Thread線程類的子類(子線程),同時(shí)重寫 Thread類的 run)方法;

(2)創(chuàng)建該子類的實(shí)例對(duì)象,并通過(guò)調(diào)用start()方法啟動(dòng)線程。

接下來(lái)通過(guò)案例來(lái)演示Thread類使用這兩種方法來(lái)實(shí)現(xiàn)多線程的過(guò)程。

//1.定義一個(gè)繼承 Thread 線程類的子類
class MyThread1 extends Thread {
    //創(chuàng)建子線程類有參構(gòu)造方法
    public MyThread1(String name) {
        super(name);
    }
    //重寫 Thread類的run()方法
    public void run() {
         int i=0;
         while (i++<5){
             System.out.printIn (Thread.currentThread().getName()
                                   +"的run()方法在運(yùn)行")
         }
     }
}
public class Example01 {
     public static void main(String[] args)(
          //2.創(chuàng)建MyThread1實(shí)例對(duì)象
          MyThread1 thread1=new MyThread1("thread1") ;
          //調(diào)用 start()方法啟動(dòng)線程
          thread1.start();
          //創(chuàng)建并啟動(dòng)另一個(gè)線程myThread2
          MyThread1 thread2=new MyThread1("thread2u) 
          thread2.start();
     }
}
定義了一個(gè)繼承 Thread 線程類的子類 MyThread1,并重寫了 run()方法其中currentThread()是 Thread類的靜態(tài)方法,用來(lái)獲取當(dāng)前線程對(duì)象,getName()方法用來(lái)獲取線程名稱。然后在 main()方法中分別創(chuàng)建了兩個(gè)線程實(shí)例,并指定線程名稱為thread1和thread2,最后通過(guò) start()方法啟動(dòng)線程。

兩個(gè)線程對(duì)象交互執(zhí)行了各自重寫的 run()方法,并打印出對(duì)應(yīng)的輸出信息,而不是按照編程順序先執(zhí)行完第一個(gè)線程方法后才執(zhí)行第二個(gè)線程方法,這就說(shuō)明程序?qū)崿F(xiàn)了多線程功能。

注意:從程序運(yùn)行結(jié)果可以看出創(chuàng)建的兩個(gè)線程實(shí)例交互運(yùn)行,但實(shí)際上,該案例中還有一個(gè) main()方法開啟的主線程,這是程序的入口,僅用于創(chuàng)建并啟動(dòng)了兩個(gè)子線程實(shí)例,并沒(méi)有執(zhí)行其他動(dòng)作輸出。通過(guò)定義一個(gè)子類MyThread繼承線程類java.lang.Thread,重寫run()方法,編碼簡(jiǎn)單。但線程類已經(jīng)繼承Thread,無(wú)法繼承其他類,不利于擴(kuò)展。

0 分享到:
和我們?cè)诰€交談!