日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ConcurrentHashMap的概述

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2020-12-24 14:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

數(shù)據(jù)結(jié)構(gòu)

jdk1.7

jdk1.8

如果頭節(jié)點(diǎn)是Node類型,其后就是一個普通的鏈表;如果頭節(jié)點(diǎn)是TreeNode類型,它的后面就是一顆紅黑樹,TreeNode是Node的子類。鏈表和紅黑樹之間可以相互轉(zhuǎn)換:初始的時候是鏈表,當(dāng)鏈表中的元素超過某個閾值時,把鏈表轉(zhuǎn)換成紅黑樹;反之,當(dāng)紅黑樹中的元素個數(shù)小于某個閾值時,再轉(zhuǎn)換為鏈表。

歷史版本對比

從JDK1.7版本的ReentrantLock+Segment+HashEntry,到JDK1.8版本中synchronized+CAS+HashEntry+紅黑樹。代碼量從原來的1000多行變成了 6000多 行,實(shí)現(xiàn)上也和原來的分段式存儲有很大的區(qū)別。

1.?dāng)?shù)據(jù)結(jié)構(gòu)

取消了Segment分段鎖的數(shù)據(jù)結(jié)構(gòu),取而代之的是數(shù)組+鏈表+紅黑樹的結(jié)構(gòu)。使用紅黑樹,當(dāng)一個槽里有很多元素時,查詢時間復(fù)雜度從原來的遍歷鏈表O(n),變成遍歷紅黑樹O(logN),Hash沖突的問題也會得到較好的解決

2.鎖的粒度:

JDK1.7采用segment的分段鎖機(jī)制實(shí)現(xiàn)線程安全,其中segment繼承自ReentrantLock。JDK1.8采用CAS+Synchronized保證線程安全。原來是對需要進(jìn)行數(shù)據(jù)操作的Segment加鎖,現(xiàn)調(diào)整為對每個頭節(jié)點(diǎn)分別加鎖,其并發(fā)度,就是Node數(shù)組的長度,初始長度為16,這降低了鎖的粒度。

3.并發(fā)的擴(kuò)容:

在JDK 7中,一旦Segment的個數(shù)在初始化的時候確立,不能再更改,并發(fā)度被固定。之后只是在每個Segment內(nèi)部擴(kuò)容,這意味著每個Segment獨(dú)立擴(kuò)容,互不影響,不存在并發(fā)擴(kuò)容的問題。但在JDK 8中,相當(dāng)于只有1個Segment,當(dāng)一個線程要擴(kuò)容Node數(shù)組的時候,其他線程還要讀寫,因此處理過會更復(fù)雜。

4.代碼實(shí)現(xiàn)上的區(qū)別:

sizeCtl:

多個線程的共享變量,是操作的控制標(biāo)識符,它的作用不僅包括threshold的作用,在不同的地方有不同的值也有不同的用途。

-1代表正在初始化

-N 表示正在進(jìn)行擴(kuò)容操作。此時sizeCtl的高16位代表的是當(dāng)前的容量(并不是數(shù)值等于容量大?。?低16位代表線程數(shù) 容量16的話計算rs = 32795 也就是 1000 0000 0001 1011 可以看出不同的容量對應(yīng)不同rs值, rs << 16 的值為 11111111111111111111111111111111 10000000000110110000000000000000, 0-15位用于統(tǒng)計參與擴(kuò)容的線程數(shù), 16-31位用于代表擴(kuò)容時容器的大小。

正數(shù)或0代表hash表還沒有被初始化,這個數(shù)值表示初始化或下一次進(jìn)行擴(kuò)容的大小,這一點(diǎn)類似于擴(kuò)容閾值的概念。后面可以看到,它的值始終是當(dāng)前ConcurrentHashMap容量的0.75倍,這與loadfactor是對應(yīng)的。

MOVED,TREEBIN,RESERVED :

MOVED,TREEBIN,RESERVED是用來表示特殊節(jié)點(diǎn)的哈希值。該類特殊節(jié)點(diǎn)均不含實(shí)際元素,且其哈希值被設(shè)置為負(fù)數(shù)和普通節(jié)點(diǎn)區(qū)分。


// ForwardingNode標(biāo)記節(jié)點(diǎn)的hash值(表示正在擴(kuò)容)

static final int MOVED = -1; // hash for forwarding nodes

// TreeBin節(jié)點(diǎn)的hash值,它是對應(yīng)桶的根節(jié)點(diǎn)

static final int TREEBIN = -2; // hash for roots of trees

static final int RESERVED = -3; // hash for transient reservations

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7357

    瀏覽量

    95108
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4981

    瀏覽量

    74482
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    PCBA單板工藝概述

    PCBA(Printed Circuit Board Assembly)是印刷電路板組裝的簡稱,涉及電路板的組裝和加工。以下是對PCBA單板工藝知識庫的詳細(xì)歸納: 一、PCBA單板工藝概述 PCBA
    的頭像 發(fā)表于 02-27 14:31 ?793次閱讀
    PCBA單板工藝<b class='flag-5'>概述</b>

    【「龍芯之光 自主可控處理器設(shè)計解析」閱讀體驗(yàn)】--全書概覽與概述

    感謝論壇與出版社提供此書以及作者編著此書。下面是書籍實(shí)物,不是很厚但很通俗易懂、簡明概要。 首先對全書章節(jié)進(jìn)行概覽,然后對第一章概述進(jìn)行閱讀學(xué)習(xí)。 全書分6章,在架構(gòu)、工具鏈、案例方面進(jìn)行了介紹
    發(fā)表于 01-18 12:58

    【Nordic隨筆】藍(lán)牙6.2核心規(guī)范概述

    藍(lán)牙6.2核心規(guī)范概述 2025年11月份藍(lán)牙聯(lián)盟發(fā)布了一項(xiàng)重要更新,主要在安全性,低延遲上面實(shí)現(xiàn)了新的突破 參考文獻(xiàn):https://www.bluetooth.com/blog
    的頭像 發(fā)表于 11-27 17:11 ?1823次閱讀
    【Nordic隨筆】藍(lán)牙6.2核心規(guī)范<b class='flag-5'>概述</b>

    【道生物聯(lián)TKB-623評估板試用】+ 模組功能概述

    一、產(chǎn)品概述 TKM-210 是一款基于道生物聯(lián)自主研發(fā)的 TK8620 芯片的大功率 LPWAN 無線通信模組,工作于 470 ~ 510MHz 頻段,支持 TurMass? 窄帶物聯(lián)網(wǎng)通信技術(shù)
    發(fā)表于 10-14 16:45

    TSV制造工藝概述

    硅通孔(Through Silicon Via,TSV)技術(shù)是一種通過在硅介質(zhì)層中制作垂直導(dǎo)通孔并填充導(dǎo)電材料來實(shí)現(xiàn)芯片間垂直互連的先進(jìn)封裝技術(shù)。
    的頭像 發(fā)表于 10-13 10:41 ?4616次閱讀
    TSV制造工藝<b class='flag-5'>概述</b>

    緩存之美:從根上理解 ConcurrentHashMap

    本文將詳細(xì)介紹 ConcurrentHashMap 構(gòu)造方法、添加值方法和擴(kuò)容操作等源碼實(shí)現(xiàn)。 ConcurrentHashMap 是線程安全的哈希表,此哈希表的設(shè)計主要目的是在最小化更新操作對哈希
    的頭像 發(fā)表于 08-05 14:48 ?682次閱讀

    神經(jīng)系統(tǒng)系列之概述

    神經(jīng)系統(tǒng)總體概述核心功能:感知刺激(Sensation)→信息整合(Integration)→產(chǎn)生反應(yīng)(Response)。兩大解剖分區(qū):1.中樞神經(jīng)系統(tǒng)(CNS):腦(Brain)和脊髓
    的頭像 發(fā)表于 07-28 20:45 ?3493次閱讀
    神經(jīng)系統(tǒng)系列之<b class='flag-5'>概述</b>

    UI開發(fā)概述

    基于ArkTS的聲明式開發(fā)范式的方舟開發(fā)框架是一套開發(fā)極簡、高性能、支持跨設(shè)備的UI開發(fā)框架,提供了構(gòu)建應(yīng)用UI所必需的能力,主要包括: ArkTS ArkTS是優(yōu)選的主力應(yīng)用開發(fā)語言,圍繞應(yīng)用開發(fā)在TypeScript(簡稱TS)生態(tài)基礎(chǔ)上做了進(jìn)一步擴(kuò)展。擴(kuò)展能力包含聲明式UI描述、自定義組件、動態(tài)擴(kuò)展UI元素、狀態(tài)管理和渲染控制。狀態(tài)管理作為基于ArkTS的聲明式開發(fā)范式的特色,通過功能不同的裝飾器給開發(fā)者提供了清晰的頁面更新渲染流程和管道。狀態(tài)管理包括UI組件狀態(tài)和應(yīng)用程序狀態(tài),兩者協(xié)作可以使開發(fā)者完整地構(gòu)建整個應(yīng)用的數(shù)據(jù)更新和UI渲染。ArkTS語言的基礎(chǔ)知識請參考初識ArkTS語言。 布局 布局是UI的必要元素,它定義了組件在界面中的位置。ArkUI框架提供了多種布局方式,除了基礎(chǔ)的線性布局、層疊布局、彈性布局、相對布局、柵格布局外,也提供了相對復(fù)雜的列表、宮格、輪播。 組件 組件是UI的必要元素,形成了在界面中的樣子,由框架直接提供的稱為系統(tǒng)組件,由開發(fā)者定義的稱為自定義組件。系統(tǒng)內(nèi)置組件包括按鈕、單選框、進(jìn)度條、文本等。開發(fā)者可以通過鏈?zhǔn)秸{(diào)用的方式設(shè)置系統(tǒng)內(nèi)置組件的渲染效果。開發(fā)者可以將系統(tǒng)內(nèi)置組件組合為自定義組件,通過這種方式將頁面組件化為一個個獨(dú)立的UI單元,實(shí)現(xiàn)頁面不同單元的獨(dú)立創(chuàng)建、開發(fā)和復(fù)用,具有更強(qiáng)的工程性。 頁面路由和組件導(dǎo)航 應(yīng)用可能包含多個頁面,可通過頁面路由實(shí)現(xiàn)頁面間的跳轉(zhuǎn)。一個頁面內(nèi)可能存在組件間的導(dǎo)航如典型的分欄,可通過導(dǎo)航組件實(shí)現(xiàn)組件間的導(dǎo)航。 圖形 方舟開發(fā)框架提供了多種類型圖片的顯示能力和多種自定義繪制的能力,以滿足開發(fā)者的自定義繪圖需求,支持繪制形狀、填充顏色、繪制文本、變形與裁剪、嵌入圖片等。 動畫 動畫是UI的重要元素之一。優(yōu)秀的動畫設(shè)計能夠極大地提升用戶體驗(yàn),框架提供了豐富的動畫能力,除了組件內(nèi)置動畫效果外,還包括屬性動畫、顯式動畫、自定義轉(zhuǎn)場動畫以及動畫API等,開發(fā)者可以通過封裝的物理模型或者調(diào)用動畫能力API來實(shí)現(xiàn)自定義動畫軌跡。 交互事件 交互事件是UI和用戶交互的必要元素。方舟開發(fā)框架提供了多種交互事件,除了觸摸事件、鼠標(biāo)事件、鍵盤按鍵事件、焦點(diǎn)事件等通用事件外,還包括基于通用事件進(jìn)行進(jìn)一步識別的手勢事件。手勢事件有單一手勢如點(diǎn)擊手勢、長按手勢、拖動手勢、捏合手勢、旋轉(zhuǎn)手勢、滑動手勢,以及通過單一手勢事件進(jìn)行組合的組合手勢事件。 特點(diǎn) 開發(fā)效率高,開發(fā)體驗(yàn)好 代碼簡潔:通過接近自然語義的方式描述UI,不必關(guān)心框架如何實(shí)現(xiàn)UI繪制和渲染。 數(shù)據(jù)驅(qū)動UI變化:讓開發(fā)者更專注自身業(yè)務(wù)邏輯的處理。當(dāng)UI發(fā)生變化時,開發(fā)者無需編寫在不同的UI之間進(jìn)行切換的UI代碼, 開發(fā)人員僅需要編寫引起界面變化的數(shù)據(jù),具體UI如何變化交給框架。 開發(fā)體驗(yàn)好:界面也是代碼,讓開發(fā)者的編程體驗(yàn)得到提升。 性能優(yōu)越 聲明式UI前端和UI后端分層:UI后端采用C++語言構(gòu)建,提供對應(yīng)前端的基礎(chǔ)組件、布局、動效、交互事件、組件狀態(tài)管理和渲染管線。 語言編譯器和運(yùn)行時的優(yōu)化:統(tǒng)一字節(jié)碼、高效FFI-Foreign Function Interface、AOT-Ahead Of Time、引擎極小化、類型優(yōu)化等。 生態(tài)容易快速推進(jìn)能夠借力主流語言生態(tài)快速推進(jìn),語言相對中立友好,有相應(yīng)的標(biāo)準(zhǔn)組織可以逐步演進(jìn)。 整體架構(gòu) 圖1 整體架構(gòu)圖 聲明式UI前端提供了UI開發(fā)范式的基礎(chǔ)語言規(guī)范,并提供內(nèi)置的UI組件、布局和動畫,提供了多種狀態(tài)管理機(jī)制,為應(yīng)用開發(fā)者提供一系列接口支持。 語言運(yùn)行時選用方舟語言運(yùn)行時,提供了針對UI范式語法的解析能力、跨語言調(diào)用支持的能力和TS語言高性能運(yùn)行環(huán)境。 聲明式UI后端引擎后端引擎提供了兼容不同開發(fā)范式的UI渲染管線,提供多種基礎(chǔ)組件、布局計算、動效、交互事件,提供了狀態(tài)管理和繪制能力。 渲染引擎提供了高效的繪制能力,將渲染管線收集的渲染指令,繪制到屏幕的能力。 平臺適配層提供了對系統(tǒng)平臺的抽象接口,具備接入不同系統(tǒng)的能力,如系統(tǒng)渲染管線、生命周期調(diào)度等。 開發(fā)流程 使用UI開發(fā)框架開發(fā)應(yīng)用時,主要涉及如下開發(fā)過程。開發(fā)者可以先通過第一個入門實(shí)例了解整個應(yīng)用的UI開發(fā)過程。 任務(wù)簡介相關(guān)指導(dǎo)學(xué)習(xí)ArkTS介紹了ArkTS的基本語法、狀態(tài)管理和渲染控制的場景。- 基本語法 - 狀態(tài)管理 - 渲染控制 開發(fā)布局介紹了幾種常用的布局方式。- 常用布局 添加組件介紹了幾種常用的內(nèi)置組件、自定義組件以及通過API方式支持的界面元素。- 常用組件 - 自定義組件 - 氣泡和菜單 設(shè)置頁面路由和組件導(dǎo)航介紹了如何設(shè)置頁面路由以及組件間的導(dǎo)航。- 頁面路由 - 組件導(dǎo)航 顯示圖形介紹了如何顯示圖片、繪制自定義幾何圖形以及使用畫布繪制自定義圖形。- 圖片 - 幾何圖形 - 畫布 使用動畫介紹了組件和頁面使用動畫的典型場景。- 屬性動畫 - 轉(zhuǎn)場動畫 - 組件動畫 - 動畫曲線 - 動畫銜接 - 動畫效果 綁定事件介紹了事件的基本概念和如何使用通用事件和手勢事件。- 通用事件 - 手勢事件
    發(fā)表于 06-24 06:36

    HarmonyOS NEXT應(yīng)用開發(fā)-Notification Kit(用戶通知服務(wù))概述與notificationManager.publish

    一、概述 本模塊提供通知管理的能力,包括發(fā)布、取消發(fā)布通知,創(chuàng)建、獲取、移除通知渠道,獲取通知的使能狀態(tài)、角標(biāo)使能狀態(tài),獲取通知的相關(guān)信息等。 說明:本模塊首批接口從API version 9開始
    發(fā)表于 06-13 15:38

    鴻蒙5開發(fā)寶藏案例分享---切面編程實(shí)戰(zhàn)揭秘

    { ConcurrentHashMap } from \'...\'; const countMap = new ConcurrentHashMap(); 四、總結(jié) 鴻蒙的AOP能力就像 代碼手術(shù)刀 ,能實(shí)現(xiàn): ? 緊急熱修復(fù)(無需發(fā)
    發(fā)表于 06-12 16:21

    FA模型和Stage模型API切換概述

    API切換概述 FA模型和Stage模型由于線程模型和進(jìn)程模型的差異,部分接口僅在FA模型下才能使用,針對這部分接口在SDK的接口中有FAModelOnly的標(biāo)記,用于提醒開發(fā)者這部分接口僅能
    發(fā)表于 06-06 06:29

    Thread標(biāo)準(zhǔn)認(rèn)證概述

    本篇知識庫文章概述了開發(fā)人員如何將其Thread物聯(lián)網(wǎng)設(shè)備進(jìn)行Thread Group認(rèn)證所需的步驟,并重點(diǎn)介紹使用Silicon Labs(芯科科技)的EFR32無線射頻器件的相關(guān)流程。
    的頭像 發(fā)表于 06-04 10:10 ?1204次閱讀
    Thread標(biāo)準(zhǔn)認(rèn)證<b class='flag-5'>概述</b>

    DataAbility組件概述介紹

    DataAbility組件概述 DataAbility,即\"使用Data模板的Ability\",主要用于對外部提供統(tǒng)一的數(shù)據(jù)訪問抽象,不提供用戶交互界面
    發(fā)表于 05-28 08:19

    智慧能源安全概述

    智慧能源安全概述 1. 智慧能源的技術(shù)架構(gòu) 智慧能源系統(tǒng)通過物聯(lián)網(wǎng)(IoT)、大數(shù)據(jù)、人工智能等技術(shù)實(shí)現(xiàn)能源生產(chǎn)、傳輸、消費(fèi)的智能化管理。其核心包括: 感知層:智能電表、傳感器實(shí)時采集電網(wǎng)運(yùn)行
    的頭像 發(fā)表于 05-18 17:11 ?837次閱讀

    納芯微電子工業(yè)控制、機(jī)器人解決方案器件選型概述

    納芯微電子工業(yè)控制、機(jī)器人解決方案器件選型概述
    的頭像 發(fā)表于 05-15 14:40 ?1184次閱讀
    納芯微電子工業(yè)控制、機(jī)器人解決方案器件選型<b class='flag-5'>概述</b>
    绥中县| 武功县| 卢氏县| 江永县| 揭西县| 临洮县| 乳源| 兴安盟| 开化县| 登封市| 白玉县| 武宣县| 湾仔区| 灵川县| 旬邑县| 仁化县| 安阳市| 寿光市| 宿州市| 丘北县| 余江县| 包头市| 威信县| 榆树市| 镇坪县| 德清县| 郸城县| 临夏市| 大石桥市| 美姑县| 和顺县| 城口县| 乃东县| 都兰县| 崇礼县| 河北省| 新竹县| 会东县| 永修县| 石林| 怀化市|