原文:面試中併發類問題的準備和學習面試
併發:數據庫
同時擁有兩個或者多個線程,若是程序在單核處理器上運行,多個線程交替得換入或者換出內存,這些線程是同時「存在」的,每一個線程都處於執行過程當中的某個狀態,若是運行在多核處理器上,此時,程序中的每一個線程都將分配到一個處理器核上,所以能夠同時運行。編程
高併發:緩存
高併發(High Concurrency)是互聯網分佈式系統架構設計中必須考慮的因素之一,他一般是指,經過設計保證系統可以同時並行處理不少請求。安全
對比:服務器
要想系統的學習併發,還須要從併發的角度學習,過程當中覆蓋J.U.C的這些知識。這裏我直接給出併發的學習步驟圖(包含併發及併發的線程安全處理,以及對當前面試常見考點的覆蓋,好比對HashMap和ConcurrentHashMap的源碼分析):
多線程
這個以前呢,還須要對Java併發的基礎進行細緻的學習,好比CPU緩存和Java內存模型(JMM),許多關鍵字好比volatile、synchronized等的特性都是在JMM裏規定好的。架構
併發其實包含兩部分:併發和高併發。其實上面一節講的都是兩部分裏的第一部分:併發。那麼併發和高併發到底有什麼區別呢?併發
當咱們說多線程併發時,其實咱們更多的是討論多個線程操做了相同的資源,這時咱們討論點更多的是落在保證線程安全以及合理分配和使用資源上。而高併發主要指系統運行過程當中遇到「短期內遇到大量操做請求」的狀況,主要發生在系統集中收到大量請求(例如:12306的搶票狀況;天貓雙十一活動)。當咱們說高併發時,咱們談的是是如何提升現有程序的性能,更多的是對高併發場景的一些解決方案,思路啦、手段等等。若是高併發處理很差,不單單下降了用戶的體驗度(請求響應時間過長),同時可能致使系統宕機,嚴重的甚至致使OOM異常,系統中止工做等。這裏呢,我直接給出高併發場景一般都會考慮的一些解決思路和手段:分佈式
參考資料:
慕課網高併發實戰(一)-併發與高併發基本概念