進程與線程的概念

什麼是進程

進程的定義(來自百度):進程(Process)是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操作系統結構的基礎。在早期面向進程設計的計算機結構中,進程是程序的基本執行實體;在當代面向線程設計的計算機結構中,進程是線程的容器。程序是指令、數據及其組織形式的描述,進程是程序的實體。
學過計算機專業的人,在學操作系統這門課程的時候,也是有接觸過進程這個概念的。
定義裏說得很清楚,操作系統進行分配資源和調度的資源時,面向的對象就是進程。也就是進程需要計算機的資源(內存、cpu等),也需要操作系統進行調度。
簡單的上個例子:下圖就是代表一個一個的進程,以及進程所佔用的資源
在這裏插入圖片描述

什麼是線程

前面進程的定義中有一句話:在當代面向線程設計的計算機結構中,進程是線程的容器。
也就是說進程是一個容器,它可以包含很多線程。
線程的定義(來自百度):線程(英語:thread)是操作系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以併發多個線程,每條線程並行執行不同的任務。
定義裏說的很清楚,一個進程中可以併發多個線程,這些線程都會執行自己的任務。
就拿網易雲音樂的軟件來說,啓動軟件後,對應有一個網易雲的進程,而裏面可以在播放歌曲的同時,滾動歌詞,可以同時搜索音樂。我們可以把它理解這些都是線程。並且線程是併發。

線程併發的優點以及帶來的問題

優點

線程併發的優點在於併發。在一個進程中的多個線程並不需要排隊執行,而可以同時執行。假設A線程執行完任務需要10秒,B線程執行完任務需要20秒。假如線程不能併發執行,那麼就需要30秒。如果線程可以同時執行,那就只需要20秒的時間就可以完成。
線程併發

問題

併發必然存在同時訪問某一塊資源或者更新某一塊資源,也就是併發讀寫。這個時候就會出現併發讀寫普遍會遇到的問題,如髒讀,寫失效,爲了解決這些問題,必然要有很多措施,如鎖機制等等。本專欄後面的內容主要也就是這一塊,介紹java多線程相關的技術。

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