多線程的兩種啟動方式的簡單總結


1. 繼承Thread類,重寫run方法,new出對象.start()即可。

public class Thread3 extends Thread{
  @Override
  public void run() {
   for (int i = 0; i < 20; i++) {
    System.out.println(this.getName()+":"+i+"這是線程"); 
   }
  }
}
2. 實現Runnable接口,實現run方法,把實現類的對象obj傳給new Thread(obj),再用Thread 類的對象.start()方法來啟動線程。

public class Thread2 implements Runnable {
 @Override
 public void run() {
  for (int i = 0; i < 20; i++) {
   String name = Thread.currentThread().getName();
   System.out.println(name+":"+i);
  }
  
 }
}
 
//測試類
public class testThread {
 public static void main(String[] args) {
  Thread2 thread2 = new Thread2();
  Thread thread = new Thread(thread2);
  thread.start();
 
  Thread3 thread3 = new Thread3();
   thread3.start();
 
  }
}
 
 

 

 注意:不能直接調用run方法,啟動線程必須使用start()方法,直接調用run方法是相當於直接調用普通方法
       直接繼承Thread的可以用(Thread.currentThread()獲取當前運行的線程)或this.getName()/setName()方法來得到或者賦予一個線程名字。
       實現runnable接口的用Thread.currentThread()獲取當前運行的線程或Thread.currentThread().getName()/setName()方法來得到或者賦予一個線程名字。這里沒有this。
 區別:實現Runnable接口有何優點?
         1. 解決了單繼承的問題,一個類只能繼承一個類,類繼承了Thread類之后就不能再繼承其他類了。實現Runnable接口,還可以繼承其他類,實現其他接口。
         2. 增強了程序的擴展性,降低了程序的耦合性(解耦)
             實現Runnable接口的方式,把設置線程任務和開啟線程進行了分離(解耦)。實現類中,重寫了run方法,用來設置線程任務,創建Thread類的對象,調用start方法,用來開啟新線程。
         3.建議以后使用中用實現Runnable接口的方式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM