1. 程式人生 > >(一)多執行緒說學逗唱:關於執行緒那不得不說的二三事

(一)多執行緒說學逗唱:關於執行緒那不得不說的二三事

  • 為什麼一上來就要寫這個 這個是啥,那個那個是啥,直接進去主題不好嗎?以前我也是這麼想的,可是後來呀…總之,一個不刨根問底的程式設計師不是好程式設計師,要深究一個知識點還就得知道他是從哪裡來,到哪裡去,既然來到這個事件,那就必然會留下點什麼痕跡。在學習Java多執行緒之前,你還別說,還真就繞不開給你講講什麼是程序、什麼是執行緒、什麼是資源分配和排程、恨不得啊先把作業系統給各位看官一五一十地先讀它個一遍,奈何遊戲太好玩也只想快點了事上戰場吃把雞。閒話不多說,這就開始進入主題…

程序是啥概念?

  • 說到程序,我相信絕大多數人都大致上瞭解是個啥,懶得打字,百度一波是這麼描述的:程序(Process)是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎
    。在早期面向程序設計的計算機結構中,程序是程式的基本執行實體;在當代面向執行緒設計的計算機結構中,程序是執行緒的容器。程式是指令、資料及其組織形式的描述,程序是程式的實體
  • 招式教給你了,剩下的也就只剩下理解了。先看到基本單位這幾個字,啥是基本單位?數學物理化學中見過不少單位,它是量化物質讓人可以大致知道某物多少、大小或長短的概念(大致就是這個意思)。但是在計算機中,摸不著看不見,說程序是基本單位可能你會很難理解也是情有可原的。在使用計算機的時候我們經常根據自己的喜好安裝不同的軟體(應用程式),安裝好後啟動起來程式就能正常執行,這時該程式在計算機上就處於執行狀態,佔用著計算機的眾多資源,比如記憶體、顯示卡、音效卡等,因此你把這一軟體正常執行時在計算機中稱之為一個程序就可以,更為直觀的顯示就是開啟電腦的工作管理員,你說執行的程式就直觀地顯示在程序那一欄之中。換言之,一個exe程式理解成為一個“程序”好像也不為過…

在這裡插入圖片描述

執行緒是啥概念?

  • 簡單地說:執行緒可以理解為在程序中獨立執行的子任務。就拿我最喜歡的一件事情來說吧,聽音樂。聽音樂我最喜歡的音樂軟體就是網易雲音樂,為什麼呢?因為網易雲音樂中居住著眾多有故事的文藝青年,每聽一首歌我都喜歡看下面關於人生、愛情或哲理的評論,總覺得啊,他們的生活怎麼百般滋味,而自己只能與程式碼相依為命。上面說到可以吧一個程序比作一個軟體的執行,沒毛病,那麼很多軟體在執行的時候都不只是做一件事情,就像聽音樂的同時細細品味下面的評論,看完一屏刷一屏,也不會出現我聽音樂的時候看不了評論或者重新整理評論音樂就戛然而止的情況。這時候很顯然地就可以知道在網易雲音樂這一程序執行的過程中,必然地有多個執行緒在執行不同的功能模組,歌曲播放是一個執行緒,評論系統是一個執行緒。計算機的更新換代是非常快的,現在的電腦基本都是多CPU的,CPU的執行速度快到無法想象,因此一個程式執行時也能夠在同一時間執行多個執行緒,達到同時的目的。

  • 瞭解了程序和執行緒的概念之後,我們也就大致上知道了為什麼多執行緒在程式中的地位如此之重要,它不但表現在豐富了程式的功能嗎,更表現在資源利用率和節約了時間上面。在今天,絕大部分的程式也都是多執行緒的,能夠同時滿足使用者的多種需求而不需要浪費不必要的等待時間…我們作為程式設計師,程式的創造者,在編碼的過程中需要考慮的就是提高程式的執行效率,滿足使用者的需求,要做到這一點,學好多執行緒技術必不可少。