java線程(一),java線程(

來源:互聯網
上載者:User

java線程(一),java線程(
java線程基礎什麼是線程?

  這裡引用百度百科的一句話:“線程,有時被稱為輕量級進程(Lightweight Process,LWP),是程式執行流的最小單元。一個標準的線程由線程ID,當前指令指標(PC),寄存器集合和堆棧組成。”,簡單來說線程cpu執行程式調度的最小單元。cpu通過調用執行一個個線程來促使程式能夠正常運行。

線程、進程、應用程式之間的關係

  在作業系統中一個進程就代表一個應用程式,如果將一個應用程式看做成一個實體的話,那進程就是一個正在啟動並執行實體。一個應用程式中可以包含多個線程,同樣進程中也可以包含多個線程,多個線程的組合稱為了一個應用程式,如果一個應用程式中只有一個線程時,那改線程就是一個用用程式,我們稱之為單線程程式!

java中如何建立線程

  在java中有兩種建立線程的方式,一種是實現Runnable介面的run()方法並將其對象執行個體傳入Thread構造中來建立線程,一種是擴充Thread類的run方法來建立線程

1         new Thread(new Runnable() {2             public void run() {3               //省略該線程要執行的代碼4             }5         }).start();
實現Runnable介面的方式
new Thread(){            @Override            public void run() {                //省略該線程要執行的代碼                super.run();            }        }.start();
擴充Thread類的方式

 Thread類是java API提供的線程類,其通過start()方法來啟動線程,線上程啟動後執行run()方法中的代碼,當run()方法中的代碼執行完成後線程結束。在以上兩種建立線程的方式中推薦使用實現Runnable介面的方式建立線程,因為這種方式更符合物件導向思想,且不會破壞java API原有代碼的設計結構,擴充Thread類的方式不僅破壞了Java API原有的設計結構且不符合物件導向的設計思想。而且在Thread類的原始run()方法中也是調用Runable介面的run()方法來實現線程內容代碼的調用。

 

 線程的幾種狀態

  線程大致上可以分為五種狀態:建立、可運行(就緒)、阻塞(掛起)、運行、死亡。

  建立:通過new Thread()來建立線程執行個體,但未調用start()方法。這時線程的執行個體已經被建立出來,但並沒有啟動該線程。

  就緒:線程執行個體建立後調用start()方法。這時線程已經啟動,可以被JVM調度交由cpu執行,但cpu目前並沒有執行該線程。

  運行:線程已經啟動,且已被JVM調度交由cpu執行,cpu正在執行該線程。

  阻塞:線程在運行時,調用線程對象的sleep()、join()方法或該線程鎖定的監視對象的wait()方法時現場進入阻塞狀態,知道達到某種條件後進入就緒狀態。

  死亡:當線程對象的run()方法執行結束,或在執行過程中出現錯誤導致線程異常結束,這時線程處於死亡狀態。

改變線程狀態的幾種方法詳解線程對象產生的方法

  sleep():sleep方法使線程放棄cpu的使用權進入休眠狀態一段時間,這段時間過後線程自動進入就緒狀態。

  join():join()方法使線程放棄cpu的使用權並加入另一該線程,當另一個線程運行結束進入死亡狀態後該線程自動進入就緒狀態,否則將一直處於阻塞狀態。

  yield():yield()方法使線程暫時放棄cpu的使用權進入就緒狀態,但由於cpu的調度是隨機的無法幹預的所以有時yield()方法起不到任何效果。

  start():start()方法使線程對象啟動進入就緒狀態。注意:start()方法只能線上程執行個體建立後調用一次,當線程進入死亡狀態時則無法再調用start()方法使其進入就緒狀態。  

線程鎖定監視對象產生的方法

  wait():wait()方法使當前線程放棄cpu的使用權和該對象的鎖,進入阻塞狀態知道其他線程調用該對象的notify()或notifyall()方法後進入就緒狀態。

  notify():notify()方法檢測該對象上是否有等待的線程,若有一個或多個則隨機挑選一個線程使其進入就緒狀態。沒有則不進行任何操作。

  notifyall():notifyall()方法檢測該對象上是否有等待的線程,若有則使其全部進入就緒狀態。沒有則不進行任何操作。

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.