[英]What is adaptive spinning w.r.t lock acquisition?
為提高內在鎖的性能而給 java 6 帶來的四個主要變化之一是Adapative Spinning技術。 究竟什么是自適應旋轉? 是自旋鎖和互斥鎖的組合嗎? 有人可以用一種易於理解的方式解釋這種策略的用處,默認情況下,JDK6 開始提供這種策略。
究竟什么是自適應旋轉?
引用此Java 6 性能頁面:
自適應自旋是一種優化技術,其中嘗試競爭同步進入操作的線程使用兩階段自旋然后阻塞策略。 該技術使線程能夠避免影響性能的不良影響,例如上下文切換和轉換后備緩沖區 (TLB) 的重新填充。 它是“自適應的”,因為自旋的持續時間由基於諸如同一監視器上最近自旋嘗試的成功率和/或失敗率以及當前鎖所有者的狀態等因素的策略決策確定。
因此,線程最初嘗試在實際阻塞之前嘗試自旋幾次嘗試獲取鎖。 然后在將來它使用以前的成功/失敗指標來自適應地確定它應該嘗試旋轉還是阻塞。 旋轉會浪費 CPU 時間,而阻塞可能會導致上下文切換,並且線程可能會等待比必要時間更長的時間。 目標是嘗試根據過去的行為優化這兩個問題。
有關更多詳細信息,性能文檔參考了 Dave Dice 題為Java SE 6 (HotSpot) 中的同步的演示文稿。 第一張幻燈片的標題是“競爭成本(可擴展性 + 延遲)”:
在演示文稿的后面有一張名為“自適應旋轉”的幻燈片:
有趣的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.