java線程簡要

多線程
 
 
 實現Runnable 接口的類就可以成爲線程,Thread類就是因爲實現了Runnable接口所以才具有了線程的功能
 Runnable接口只有一個方法就是run()方法,實現Runnable()接口就必須實現run()方法
 
 Thread類的構造方法:
     Thread thread=new Thread();
Thread thread=new Thread(Runnable simple);
Thread thread=new Thread("ThreadName");
Thread thread new Thread(Runnable simple,String name);
 
 
 線程主要有四種狀態:
   創建
   可執行
   非可執行
   消亡
   
   當實例化一個Thread對象並執行start()方法後,線程進入“可執行”狀態。
   一個線程進入“可執行”狀態,並不代表突然可以一直執行到run()結束爲止。實際上它可能正在等待取得CPU時間
   也就是等候權限,這由優先級決定。
   
   當線程離開“可執行”狀態進入等待隊列是,線程進入“非可執行”狀態。可以用Thread中的wait(),sleep()達到這個目的。
   當Thread類的start()方法在程序中被調用時,Java須立即自動調用它的run()方法。當run()方法執行完後,改Thread會自動消亡。
   
   java語言中優先級分1~10,默認爲5;可以使用Thread類中的setPriority()方法來設定線程的優先級,但必須在1~10之內,否則會出現
   異常。
   優先級較高的線程會被提前執行,當它執行完畢纔會輪到優先級較低的線程執行。如果優先級相同,那麼就採用輪流執行的方式。
   
   乳溝需要一個線程禮讓一其他線程,可以使用Thread類中的yield()方法。
   
   線程的控制:
       線程的 啓動
      掛起
    狀態檢查
正確結束
一個新的線程被創建後處於初始狀態,實際上並沒有立即進入運行狀態,而是出於就緒狀態,當輪到這個線程執行的時候,
就開始執行線程run()方法中的代碼。執行run()方法是通過調用Thread類中start()方法來實現的。
調用start()方法啓動線程的run()方法不同於一般的調用方法。一般方法必須
等到被調用方法執行完畢才能夠返回。
而調用線程的start()方法後,start()方法告訴系統該線程準備就緒並可以啓動run()方法後
就返回並繼續執行調用start()方法下面的語句。這時run()方法可能還在運行。
線程進入“非可執行狀態”:
  1.調用sleep()方法是縣城進入休眠狀態;
   2.通過調用join()方法使線程掛起,如果線程A調用線程B的join()方法,那麼線程A將被掛起,直到線程B執行完畢爲止;
 3.通過調用wait()方法使線程掛起,知道線程得到了notify()和notifyAll()消息,線程纔會進入
 “可執行”狀態
 
sleep()方法:
    Thread.sleep(long millis) millis 必選參數,該參數以毫秒爲單位設置線程的休眠時間。
執行該方法後,當前線程將休眠指定的時間段,如果任何一個線程中斷了當前線程的休眠,該方法將拋出
InterruptedException異常對象,所以在使用sleep()方法是,必須捕獲該異常
 
對於處於未知狀態下的線程,可以通過  isAlive()方法來確定一個線程是否認出在活動狀態。當然即使處於活動狀態的線程
也並不意味着這個線程一定正在運行,對於一個一開始運行但還沒有完成任務的線程,這個方法返回true
isAlive() 方法用於測試線程是否處於活動狀態。如果線程已經啓動且尚未終止,則爲活動狀態。
使用Thread類中的setDaemon()方法來設置一個線程爲後臺線程。但注意的是,必須在線程啓動之前調用setDaemon()方法
,這樣才能將這個線程設置爲後臺線程。
語法格式:thread.setDaemon(boolean on)
     thread:Thread Object
 on:如果這個參數爲true,則將該線程標記爲後臺線程
使用Thread類中的isDaemon()方法來判斷線程是否是後臺線程
    thread.isDaemon()
線程同步:
     關鍵字synchronized

  

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