【線程】Java程式中的單任務流。我們把每個任務放在相對獨立的線程中去實現。main是主線程
【並發】同時完成多個任務。程式執行的步驟都是有順序的,但很多時候我們需要並發處理一個問題,而不是按順序處理一個問題
【多線程】線程也看成對象,多線程指多個線程對象
【API中支援線程的類】java.lang.Thread。Thread類的對象就是線程對象
練習一、初始化線程對象,列印線程
package pkg3;public class test3 implements Runnable{ Thread th1; public test3() {//2 th1=new Thread(this);//2-1初始化了線程對象 th1.start();//2-2啟動了線程對象,自動調用run方法 } public static void main(String[] args){ new test3();//1.從主線程開始,調用構造方法 }@Overridepublic void run() {//3 // TODO Auto-generated method stub System.out.println("線程運行了");//3-1列印線程,“運行了”}}
練習二、線程的生命週期:new、runnable、not runnable、dead
package pkg3;public class test3 implements Runnable{ Thread th1; public test3() {//2 th1=new Thread(this);//2-1初始化了線程對象 th1.start();//2-2啟動了線程對象,自動調用run方法 } public static void main(String[] args){ new test3();//1.從主線程開始,調用構造方法 }@Overridepublic void run() {//3 // TODO Auto-generated method stub while(true) { System.out.println("線程運行了");//3-1列印線程,“運行了” try { th1.sleep(500);//強制睡眠500毫秒,進入非運行狀態not runnable(睡眠、堵塞、排隊) } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}}
練習三、多線程
package pkg3;public class test3 implements Runnable{ Thread th1,th2; public test3() {//2 th1=new Thread(this);//2-1初始化了線程對象 th2=new Thread(this); th1.start();//2-2啟動了線程對象,自動調用run方法 th2.start(); } public static void main(String[] args){ new test3();//1.從主線程開始,調用構造方法 }@Overridepublic void run() {//3 // TODO Auto-generated method stub /*while(true) { System.out.println("線程運行了");//3-1列印線程,“運行了” try { th1.sleep(500);//強制睡眠500毫秒,進入非運行狀態not runnable(睡眠、堵塞、排隊) } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }*/ Thread th=Thread.currentThread();//這個方法可以判斷進入run方法的線程對象 if(th==th1) { System.out.println("線程1運行了"); } if(th==th2) { System.out.println("線程2運行了"); }}}