java多線程的基本概念

java多線程的相關概念

進程與線程:

  • 進程:一個具有一定獨立功能的程序關於某個數據集合的一次運行活動,是系統進行資源分配和調度運行的基本單位。
    這是官方解釋,看起來是比較的抽象,不知道在說什麼。我們以windows爲例,因爲windows是我們都比較熟悉的操作系統,我們打開任務管理器,會看到系統正在運行中的,瀏覽器,QQ,微信,像這種程序其實就是進程,這樣說會不會好理解很多了。

  • 線程:操作系統能夠進行運算調度的最小單位。
    這個就更抽象了,什麼是最小單位,不過很顯然可以看出來線程的範圍是小於進程的。一個個的線程組建了進程,線程其實就是每一個任務,打個比方,音樂播放器,既可以同時放mv,又可以播放聲音,還可以查看歌曲的留言,這裏面的每一個小功能爲們都可以看成是線程,當然可能不準確,但是這種解釋可以讓我們更好的理解線程,理解線程和進程之間的區別。

並行和併發

  • 並行:同一時刻一組程序獨立異步地執行。
    這個不是很難理解,就是說在某一個具體的時刻,注意事是時刻,一組程序獨立異步的執行,獨立和異步這兩個詞也很關鍵,也就是說互不干擾,所以說只有多個cpu同時存在,纔可以完成這樣的事情。
  • 併發:是指一個時間段中有幾個程序都處於已啓動運行到運行完畢之間,且這幾個程序都是在同一個處理機上運行,但任一個時刻點上只有一個程序在處理機上運行。
    很有意思,這個用了一個詞是時間段,我們常說的多線程其實就是指的併發,他是可以通過cpu的調度來執行各自的任務,每個線程並不是同時執行的,在一個時刻只有一個線程在執行任務,cpu會在這段時間,分給線程時間片,時間片用完之後會進行線程的切換,其實就是在很短的時間內,進行線程的切換,就會給我們造成一種錯覺說他們是同時在執行的。

時間片

時間片指的就是cpu調度的時候分給每個線程或者進行的一段cpu時間,你在這段時間內可以執行任務,時間一到,就必須得停止。通常分配的時間片的時間是很短的。

總結: 經過上面基礎概念的理解,多線程就是通過cpu的調度,也就是時間片的分配,讓多個線程快速切換,以達到可以不必等到某一個任務從頭到尾執行完之後再執行其他任務的目的。

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