Java基礎——線程總結

來源:互聯網
上載者:User

標籤:mod   哪些   不同的   pop   isalive   主線程   data-   執行   read   

Java基礎——線程總結

一、線程是什嗎?

線程:一個程式裡不同的運行路徑。

 

二、怎樣建立線程?

 兩種方法建立線程:

第一種

(1)定義詳細功能類實現Runnable介面,能夠多次調用而實現資料共用

(2)Thread myThread = new Thread(…)          //參數為Runnable介面類型

(3)Runnable中僅僅有一個方法

      public void run(){……}                           //用以定義線程執行體

另外一種

(1)定義一個Thread的子類並重寫run()方法

      class MyThread extends Thread {      public void run(){……}      }

(2)產生該類的對象

      MyThread myThread = new MyThread (…)

 

三、能夠對線程做哪些控制?

方法

功能

bool isAlive(myThread Thread)

推斷線程是否還“活”著,即線程是否還未終止。

int getPririty()

獲得線程的優先順序數值

void setPriority(int NewPriority)

設定線程的優先順序數值

Thread.sleep(int sleepTime)

指定當前線程的睡眠時間(單位:毫秒)

void join()

將當前線程與上一主線程合并,即A線程的a()方法調用了B線程。則讓B線程結束,再恢複A線程繼續運行。

void yield()

讓出CPU,當前線程進入就緒隊列等待調度。

void wait()

當前線程進入對象的wait pool。

void notify()/void notifyAll()

喚醒對象的wait pool中的一個/全部等待線程。

 

四、辨析wait()與sleep()

       之所以對這兩個方法辨析,它們有個共同點——暫停線程的運行。但要說起它們的不同點。那還是挺多的。

不同點:

(1)Wait()是Object對象的方法;而Sleep(int sleepTime)是Thead()線程的方法。

(2)Wait()運行後,當前對象的鎖就會被釋放;而Sleep(int)運行後,鎖仍然在其手中。

(3)Wait()不須要指定停留時間,須要notify()方法或notifyAll()方法將其喚醒;而Sleep(int),當中int指定睡眠的毫秒數,僅僅有在超過這個時間後。醒過來,當再次獲得時間片之後,才幹繼續運行。

 

Java基礎——線程總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.