當前位置:編程學習大全網 - 編程語言 - 電腦培訓分享Java 並發編程:核心理論

電腦培訓分享Java 並發編程:核心理論

並發編程是Java程序員最重要的技能之壹,也是最難掌握的壹種技能。它要求編程者對計算機最底層的運作原理有深刻的理解,同時要求編程者邏輯清晰、思維縝密,這樣才能寫出高效、安全、可靠的多線程並發程序。電腦培訓/發現本系列會從線程間協調的方式(wait、notify、notifyAll)、Synchronized及Volatile的本質入手,詳細解釋JDK為我們提供的每種並發工具和底層實現機制。在此基礎上,我們會進壹步分析java.util.concurrent包的工具類,包括其使用方式、實現源碼及其背後的原理。本文是該系列的第壹篇文章,是這系列中最核心的理論部分,之後的文章都會以此為基礎來分析和解釋。

關於java並發編程及實現原理,還可以查閱《Java並發編程:Synchronized及其實現原理》。

壹、***享性

數據***享性是線程安全的主要原因之壹。如果所有的數據只是在線程內有效,那就不存在線程安全性問題,這也是我們在編程的時候經常不需要考慮線程安全的主要原因之壹。但是,在多線程編程中,數據***享是不可避免的。最典型的場景是數據庫中的數據,為了保證數據的壹致性,我們通常需要***享同壹個數據庫中數據,即使是在主從的情況下,訪問的也同壹份數據,主從只是為了訪問的效率和數據安全,而對同壹份數據做的副本。我們現在,通過壹個簡單的示例來演示多線程下***享數據導致的問題。

二、互斥性

資源互斥是指同時只允許壹個訪問者對其進行訪問,具有唯壹性和排它性。我們通常允許多個線程同時對數據進行讀操作,但同壹時間內只允許壹個線程對數據進行寫操作。所以我們通常將鎖分為***享鎖和排它鎖,也叫做讀鎖和寫鎖。如果資源不具有互斥性,即使是***享資源,我們也不需要擔心線程安全。例如,對於不可變的數據***享,所有線程都只能對其進行讀操作,所以不用考慮線程安全問題。但是對***享數據的寫操作,壹般就需要保證互斥性,上述例子中就是因為沒有保證互斥性才導致數據的修改產生問題。

  • 上一篇:信息化教學評價的評價發展總趨勢包含
  • 下一篇:為什麽隧道能縮短裏程,數學原理
  • copyright 2024編程學習大全網