1.分類 基本屬性:String最終的屬性就一個char[] value; 構造方法區域:比較複雜的就是通過unicode碼和byte[]構造; 字符串比較:是否相等、大小(排序); 查詢:indexOf、startsWith、
一. 爲什麼使用線程池? a.線程創建所需時間爲T1,線程執行任務時間爲T2,線程銷燬時間爲T3,而往往T1+T3>T2。所以頻繁創建線程會損壞而外的時間。 b.如果有任務來了,再去創建線程的話效率比較低。 c.線程池可以管理控
1.可見性 JVM定義了線程與主內存之間的抽象關係:共享變量存儲在主內存,每個線程都有一個私有的本地內存,本地內存保存了該線程使用到的主內存的副本拷貝,線程對變量的所有操作都必須在本地內存中進行,而不能直接讀寫主內存的變量。 例
什麼是CAS? CAS的全稱是 Compare And Swap(Compare And Exchange) 比較並交換, cas(v,a,b) 變量v,期待值a, 修改值b CAS底層通過Lock指令實現。 以 java.util.c
看jdk源碼,看到 LinkedHashSet時,說底層調用的LinkedHashMap進行存放數據,點入LinkedHashSet的add方法看了一下,看到如下代碼: /** * Adds the specified
前言 AQS是AbstractQueuedSynchronizer類的簡稱,雖然我們不會直接使用這個類,但是這個類是Java很多併發工具的底層實現。本文主要從源碼的角度,全方位的解析AQS類。 底層實現 首先看下哪些併發工具類是使
上文我們介紹過JDK源碼學習–String類,該類的內部用了一個char數組表示一個字符串對象的,只是該字符數組被final修飾,初始化之後就不能被修改,但是對於經常做字符串修改操作的情況下,String類就需要不斷創建新對象,性
String類 String對象不可變,所以可以共享,當對象創建完之後,該對象的內容(字符序列)是不允許改變的,細看源碼發現內容改變則會new一個新的String對象,返回到原地址中。String類維護的char數組被final所
前言: 先上Java集合框架框圖,以對其整體把握 概述 本文將解析HashMap的工作原理,put()和get()方法的過程是如何實現的,equals()和hashCode()的都有什麼作用,HashMap的大小超過了負載因子
目錄1.初始化2.核心方法2.1 invoke方法externalPushexternalSubmit線程池加鎖 lockRunState/unlockRunStatesignalWork ForkJoinPool的整體邏輯其實
目錄非負整數的乘法用二進制位移如何表達取小於某個數的偶數 在看JDK的源碼的過程中,難免會碰到一些二進制的操作,如果對這些操作不太熟悉就不明白作者到底想做什麼事情,從而導致不能理解代碼,那麼二進制有哪些玩法呢,本文嘗試着將這些玩
接下來再看一個JDK中比較特殊的類Unsafe。 一、概述 Java和C++語言的一個重要區別就是Java中我們無法直接操作一塊內存區域,不能像C++中那樣可以自己申請內存和釋放內存。Java中的Unsafe類爲我們提供了類似C++手動管
ConcurrentHashMap(JDK1.8)學習記錄 看了忘忘了看系列之ConcurrentHashMap,本文主要記錄下通過看ConcurrentHashMap源碼學習到的知識點。主要有以下幾個點。文章稍長,需要耐心
ReentrantLock源碼剖析 這裏又是看了忘忘了看系列之ReetrantLock,今天趁着有時間記錄下ReentrantLock源碼的學習過程。這篇博客主要記錄以下幾個方面內容。歡迎各位多提建議或者意見 1、Re
Java源碼學習筆記–Object類 歡迎👏👏👏關注我的微信公衆號:人人都是Java程序員,公衆號不定期更新。 本源碼的版本如下:. java version “1.8.0_201”. Java™ SE Runtime Envir