1. 程式人生 > 實用技巧 >多執行緒和鎖,Java架構師必備技能!

多執行緒和鎖,Java架構師必備技能!

你經常面向CRUD工作嗎?

如果說程式設計只是單純的承接產品需求開發系統功能,那麼基本可以把程式開發簡單理解成按照需求PRD,定義屬性建立方法呼叫展示,這三個步驟。

尤其是在一些大公司中,會有易用的、完善的、標準的架構體系和運維服務,例如:RPC、MQ、Redis叢集、分散式任務、配置中心、分庫分表元件、閘道器等搭配出來的系統架構。也因此讓程式設計師做到只關心業務功能開發

讓程式設計師只關心業務開發,有成熟的系統架構、有標準的開發流程、有通用的功能設計,對於團隊效能提升來說是非常好的事。但一部分程式設計師正因為有這樣的好事,讓日復一日的歲月做著同樣的事,最後成為工具人。

如果是框架和中介軟體的存在,是了讓程式設計師只關心業務開發。那為什麼你面試的時候會被問到核心元件的設計和原理呢?

面試必問的多執行緒,甚至可能問的還挺深入,比如:AQS、CAS、CLH、MCS、鎖升級、物件頭等等。但在實際的業務開發中,你用到了嗎?可能這也是大部分同學說,面試造火箭的地方!

網際網路應用中有些業務場景開發,就比如我們的核心元件中,資料庫連線池、分散式任務中,都會涉及到多執行緒和鎖的使用。也有一些類似商品秒殺的場景,同樣需要使用到鎖。

那麼,使用多執行緒為了更大限度的利用資源提升效率,加鎖是為了在同一個資源有競爭的情況保證業務流程的正確性。

就像:資料庫連線池為了合理分配資料庫資源、商品秒殺是為了庫存的競爭。

可是,在沒有需要競爭和分配資源的情況下,一般並不會在分散式場景下使用到多執行緒。假如我們做一個使用者資源單次計數的操作,那麼原來的應用是單例項還是可以加鎖累加計數的。但現在是分散式應用部署,也就是你可能這一時刻是A例項提供你的需求,當你再次重新整理頁面後可能訪問到的就是B例項。這時候在想做一些例項上的累加,就沒那麼方便了。

這也就是在分散式應用框架的應用中,讓你能用到多執行緒和鎖的地方並不多的原因。但如果你有需要去了解一些中介軟體或者核心元件的設計時,就需要了解相關的核心知識。

想要一次性搞明白多執行緒、各種鎖,提升Java技術能力的同學,

推薦學習:https://sourl.cn/tk8agc


架構師必備核心技能,11章節超全面講解!

需要提升自己,跳槽漲薪的同學,千萬不要錯過!

這也就是在分散式應用框架的應用中,讓你能用到多執行緒和鎖的地方並不多的原因。

但如果你有需要去了解一些中介軟體或者核心元件的設計時,就需要了解相關的核心知識。