單CPU:時間切片
多核多線程CPU:真正的并行
??? 如果一個線程在讀一個內存時,另一個線程正向該內存進行寫操作,那進行讀操作的那個線程將獲得什么結果呢?是寫操作之前舊的值?還是寫操作成功之后的新值?或是一半新一半舊的值?或者,如果是兩個線程同時寫同一個內存,在操作完成后將會是什么結果呢?是第一個線程寫入的值?還是第二個線程寫入的值?還是兩個線程寫入的一個混合值?因此如沒有合適的預防措施,任何結果都是可能的。而且這種行為的發生甚至不能預測,所以結果也是不確定性的。
在并發編程中,有兩個基本的執行單元:進程和線程。在java語言中,并發編程最關心的是線程,然而,進程也是非常重要的。
即使在只有單一的執行核心的計算機系統中,也有許多活動的進程和線程。因此,在任何給定的時刻,只有一個線程在實際執行。處理器的處理時間是通過操作系統的時間片在進程和線程中共享的。
現在具有多處理器或有多個執行內核的多處理器的計算機系統越來越普遍,這大大增強了系統并發執行的進程和線程的吞吐量–但在不沒有多個處理器或執行內核的簡單的系統中,并發任然是可能的。
進程
進程具有一個獨立的執行環境。通常情況下,進程擁有一個完整的、私有的基本運行資源集合。特別地,每個進程都有自己的內存空間。
進程往往被看作是程序或應用的代名詞,然而,用戶看到的一個單獨的應用程序實際上可能是一組相互協作的進程集合。為了便于進程之間的通信,大多數操作系統都支持進程間通信(IPC),如pipes 和sockets。IPC不僅支持同一系統上的通信,也支持不同的系統。
Java虛擬機的大多數實現是單進程的。Java應用可以使用的ProcessBuilder對象創建額外的進程,多進程應用超出了本課的范圍。
線程
線程有時也被稱為輕量級的進程。進程和線程都提供了一個執行環境,但創建一個新的線程比創建一個新的進程需要的資源要少。
線程是在進程中存在的 — 每個進程最少有一個線程。線程共享進程的資源,包括內存和打開的文件。這樣提高了效率,但潛在的問題就是線程間的通信。
多線程的執行是Java平臺的一個基本特征。每個應用都至少有一個線程 – 或幾個,如果算上“系統”線程的話,比如內存管理和信號處理等。但是從程序員的角度來看,啟動的只有一個線程,叫主線程。這個線程有能力創建額外的線程,
多核多線程CPU:真正的并行
??? 如果一個線程在讀一個內存時,另一個線程正向該內存進行寫操作,那進行讀操作的那個線程將獲得什么結果呢?是寫操作之前舊的值?還是寫操作成功之后的新值?或是一半新一半舊的值?或者,如果是兩個線程同時寫同一個內存,在操作完成后將會是什么結果呢?是第一個線程寫入的值?還是第二個線程寫入的值?還是兩個線程寫入的一個混合值?因此如沒有合適的預防措施,任何結果都是可能的。而且這種行為的發生甚至不能預測,所以結果也是不確定性的。

在并發編程中,有兩個基本的執行單元:進程和線程。在java語言中,并發編程最關心的是線程,然而,進程也是非常重要的。
即使在只有單一的執行核心的計算機系統中,也有許多活動的進程和線程。因此,在任何給定的時刻,只有一個線程在實際執行。處理器的處理時間是通過操作系統的時間片在進程和線程中共享的。
現在具有多處理器或有多個執行內核的多處理器的計算機系統越來越普遍,這大大增強了系統并發執行的進程和線程的吞吐量–但在不沒有多個處理器或執行內核的簡單的系統中,并發任然是可能的。
進程
進程具有一個獨立的執行環境。通常情況下,進程擁有一個完整的、私有的基本運行資源集合。特別地,每個進程都有自己的內存空間。
進程往往被看作是程序或應用的代名詞,然而,用戶看到的一個單獨的應用程序實際上可能是一組相互協作的進程集合。為了便于進程之間的通信,大多數操作系統都支持進程間通信(IPC),如pipes 和sockets。IPC不僅支持同一系統上的通信,也支持不同的系統。
Java虛擬機的大多數實現是單進程的。Java應用可以使用的ProcessBuilder對象創建額外的進程,多進程應用超出了本課的范圍。
線程
線程有時也被稱為輕量級的進程。進程和線程都提供了一個執行環境,但創建一個新的線程比創建一個新的進程需要的資源要少。
線程是在進程中存在的 — 每個進程最少有一個線程。線程共享進程的資源,包括內存和打開的文件。這樣提高了效率,但潛在的問題就是線程間的通信。
多線程的執行是Java平臺的一個基本特征。每個應用都至少有一個線程 – 或幾個,如果算上“系統”線程的話,比如內存管理和信號處理等。但是從程序員的角度來看,啟動的只有一個線程,叫主線程。這個線程有能力創建額外的線程,
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
