建立線程的兩種方法:java
繼承thread類:ide
1>定義類繼承Thread。2>複寫Thread類中的run方法。spa
目的:將自定義代碼存儲在run方法。讓線程運行。線程
3>調用線程的start方法,該方法兩個做用:啓動線程,調用run方法。code
class ThreadTest extends Thread{ @Override public void run() { // TODO Auto-generated method stub while(true){ try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName()); } } }
該類就定義了一個功能,用於存儲線程要運行的代碼。該存儲功能就是run方法。對象
也就是說Thread類中的run方法,用於存儲線程要運行的代碼繼承
2.實現runnable接口接口
1>定義類實現Runnable接口get
2>覆蓋Runnable接口中的run方法,將線程要運行的代碼存放在該run方法中。io
3>經過Thread類創建線程對象。
class Ticket implements Runnable//extends Thread { private int tick = 100; public void run() { while(true) { if(tick>0) { System.out.println(Thread.currentThread().getName()+"....sale : "+ tick--); } } } }
或者new Thread(new Runnable( run(){} )).start(); //將其做爲參數傳遞給Thread類
實現方式好處:避免了單繼承的侷限性。
在定義線程時,建議使用實現方式。
兩種方式區別:
繼承Thread:線程代碼存放Thread子類run方法中。
實現Runnable,線程代碼存在接口的子類的run方法。