簡體   English   中英

Java 中的隱式和顯式並行

[英]Implicit and Explicit Parallelism in Java

一直在研究 Java 語言中的隱式和顯式並發,經過大量研究后,我想弄清楚一些事情。

  • Java 語言中的隱式並行性是否僅通過使用 Java 8 流來實現?
  • 我是否認為 Java 中的顯式並行是通過使用程序員編寫的線程來實現的? (不同之處在於隱式並行性應該通過編譯器而不是程序員編寫的代碼發生)?

謝謝

隱式並行是指編譯器在沒有程序員“任何”提示的情況下並行執行某些操作的能力。 如果您要執行的計算具有某些屬性(例如,並行作業之間沒有數據依賴性),這是可以實現的。

Java 流是(引用 Oracle 的文檔)一系列支持順序和並行聚合操作的元素,並且與集合根本不同,因為

1)集合旨在快速訪問和操作集合的元素

2) Stream並不意味着要修改,而是要在源元素和結果元素之間創建一種管道。 結果元素是將操作(通常以函數式/lambda 樣式描述)應用於源而創建的。 這種計算可以安全地分成子管道並以並行方式處理。

組成這個管道的函數必須具有以下屬性:1)必須是非干擾的(它們不修改流源); 2) 是無狀態的(它們的結果不應該依賴於流管道執行期間可能改變的任何狀態)。 看這里

顯式並行性(顧名思義)是由程序員實現的,他可以根據需要產生盡可能多的(計算元素)。這些元素通常是線程或進程( 請參閱此處了解差異那些計算元素並發執行並且取決於程序員協調所有操作以產生正確的結果(例如顯式同步線程、交換消息、進行事務操作等)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM