高併發第一彈:準備階段 瞭解高併發
高併發第一彈:準備階段 瞭解高併發
首先需要知道什麼 併發 , 什麼是 高併發 .
併發:
關於併發的學習,可以從JDK提供的併發包為核心開始,許多其他的類和封裝都是對其進行擴充套件或者補充,我們來看一下Java併發包(java.util.concurrent包,簡稱J.U.C)的構成:
J.U.C核心由5大塊組成:atomic包、locks包、collections包、tools包(AQS)、executor包(執行緒池)。大家平時遇到許多併發相關的類都可以從這裡找到。但是呢,要想系統的掌握併發,不能是開啟J.U.C這個包,挨個類去看,這裡只是提供了五大塊,代表核心的五個方向。要想系統的學習併發,還需要從併發的角度學習,過程中覆蓋J.U.C的這些知識。:
這個之前呢,還需要對Java併發的基礎進行細緻的學習,比如CPU快取和Java記憶體模型(JMM),許多關鍵字比如volatile、synchronized等的特性都是在JMM裡規定好的。
其實我們講的都是兩部分裡的第一部分:併發。那麼併發和高併發到底有什麼區別呢?
當我們說多執行緒併發時,其實我們更多的是討論多個執行緒操作了相同的資源,這時我們討論點更多的是落在保證執行緒安全以及合理分配和使用資源上。而高併發主要指系統執行過程中遇到“短時間內遇到大量操作請求”的情況,主要發生在系統集中收到大量請求(例如:12306的搶票情況;天貓雙十一活動)。當我們說高併發時,我們談的是是如何提高現有程式的效能,更多的是對高併發場景的一些解決方案,思路啦、手段等等。如果高併發處理不好,不僅僅降低了使用者的體驗度(請求響應時間過長),同時可能導致系統宕機,嚴重的甚至導致OOM異常,系統停止工作等。這裡呢,我直接給出高併發場景通常都會考慮的一些解決思路和手段:
jimin老師課程地址: Java併發程式設計與高併發解決方案