首頁 > Java > Java基礎 > 主體

一起和Netty學習Java鎖的使用

coldplay.xixi
發布: 2021-01-04 10:04:24
轉載
2076 人瀏覽過

java基礎教學專欄介紹如何和Netty學習Java鎖定

一起和Netty學習Java鎖的使用

##推薦(免費):java基礎教學

1 鎖定的物件和範圍

    縮小粒度


2 鎖定的物件本身大小

    減少空間佔用

  • Atomic long V.S long
    前者是個對象,包含物件頭(object header)以保存hashcode、lock 等訊息,64 位元系統下佔16位元組,64位元系統下:
  • volatile long= 8 bytes
  • AtomicLong = 8 bytes (volatile long) 16bytes (物件頭) 8 bytes (引用) = 32 bytes
  • 至少節約24位元組!

所以Atomic* objects =》 Volatile primary type Static Atomic*FieldUpdater


3 鎖定的速度
## 提高並發性

LongCounter

記錄記憶體分配位元組數等功能用到的。

高並發下: java.util.concurrent.atomic.AtomicLong => java.util.concurrent.atomic.LongAdder


結論:及時衡量、使用JDK最新的功能

根據不同情況,選擇不同的並發套件實作

JDK< 1.8考慮ConcurrentHashMapV8 ( ConcurrentHashMap在jDK8中的版本)


  • 4 不同場景選擇不同的並發類別

  • 因需而變


  • 關閉並等待關閉事件執行器( Event Executor) :
    Object.wait/ notify =》 CountDownLatch

Nio Event loop中負責儲存task的Queue

Jdk's LinkedBlockingQueue (MPMC,多生產者多元消費者) -> jctools' MPSC io.netty.util.internal.PlatformDependent.Mpsc#newMpscQueue(int):





######## #######5 鎖定的價值#########能不用則不用則不用### Netty應用場景下:局部串列整體並行>- -個佇列多個執行緒模式:## # 降低用戶開發難度、邏輯簡單、提升處理效能### 避免鎖帶來的上下文切換和並發保護等額外開銷######避免用鎖:用ThreadLocal來避免資源爭用,例如Netty輕量級級的線程池實作#########

以上是一起和Netty學習Java鎖的使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!