在前面的文章《青銅4:synchronized用法初體驗》中,我們已經提到鎖的概念,並指出synchronized是鎖機制的一種實現。可是,這么說未免太過抽象,你可能無法直觀地理解鎖究竟是什么?所以,本文會粗略地介紹synchronized背后的一些基本原理,讓你對Java中的鎖有個粗略但直觀 ...
在前面的文章中,我們已經體驗過synchronized的用法,並對鎖的概念和原理做了簡單的介紹。然而,你可能已經察覺到,有一個概念似乎總是和synchronized 鎖這兩個概念如影相隨,很多人也比較喜歡問它們之間的區別,這個概念就是Monitor,也叫監視器。 所以,在講解完synchronized 鎖之后,文本將為你講解Monitor,揭示它們之間那些公開的秘密,希望你不再迷惑。 首先,你要明 ...
2021-05-28 10:29 0 282 推薦指數:
在前面的文章《青銅4:synchronized用法初體驗》中,我們已經提到鎖的概念,並指出synchronized是鎖機制的一種實現。可是,這么說未免太過抽象,你可能無法直觀地理解鎖究竟是什么?所以,本文會粗略地介紹synchronized背后的一些基本原理,讓你對Java中的鎖有個粗略但直觀 ...
在前面的文章《雙刃劍-理解多線程帶來的安全問題》中,我們提到了多線程情況下存在的線程安全問題。本文將以這個問題為背景,介紹如何通過使用synchronized關鍵字解這一問題。當然,在青銅階段,我們仍不會過多地描述其背后的原理,重點還是先體驗並理解它的用法。 一、從場景中體 ...
歡迎來到《並發王者課》,本文是該系列文章中的第9篇。 在本篇文章中,我將為你介紹線程中異常的處理方式以及uncaughtExceptionHandler用法。 一、新線程中的異常去哪了 應用程序在執行過程中,難免會出現各種意外錯誤,如果我們沒有對錯誤進行捕獲處理,會直接影響應用的運行 ...
歡迎來到《並發王者課》,本文是該系列文章中的第8篇。 在本篇文章中,我將從多線程的本質出發,為你介紹線程相關的狀態和它們的變遷方式,並幫助你掌握這塊知識點。 一、多線程的本質是分工協作 如果你是王者的玩家,那么你一定知道王者中的眾多英雄分為主要分為幾類,比如法師、戰士、坦克、輔助等等。一些 ...
歡迎來到《並發王者課》,本文是該系列文章中的第14篇。 在黃金系列中,我們介紹了並發中一些問題,比如死鎖、活鎖、線程飢餓等問題。在並發編程中,這些問題無疑都是需要解決的。所以,在鉑金系列文章中,我們會從並發中的問題出發,探索Java所提供的鎖的能力以及它們是如何解決這些問題的。 作為鉑金系列 ...
monitor(監視器/管程) java對象分三部分, 對象頭 數據實例 填充 對象頭分為 普通對象- markword(32bit)/klass word(32bit)(指向對應的class對象) 數組對象-多一個array length(32bit)數組 ...
歡迎來到《並發王者課》,本文是該系列文章中的第10篇。 在本篇文章中,我將為你介紹並發中的經典問題-生產者與消費者問題,並基於前面系列文章的知識點,通過wait、notify實現這一問題的簡版方案。 一、生產者與消費者問題 生產者消費者問題(Producer-consumer problem ...
引言 最近一段時間,實驗室已經傾巢出動找實習了,博主也湊合了一把,結果有悲有喜,BAT理所應當的跪了,也收到了其他的offer,總的感受是有必要夯實基礎啊。 言歸正傳,最近在看到java多線程的時候,發現線程很多都是用了synchronized(同步鎖)的關鍵字 ...