高并發第一彈:準備階段 了解高并發
首先需要知道什么并發, 什么是高并發.
并發:
關于并發的學習,可以從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并發編程與高并發解決方案