Fail fast 機制分析

2021-10-04 02:19:33 字數 1539 閱讀 3050

fail-fast(快速失敗)機制是集合中比較常見的錯誤檢測機制,防止在對集合進行遍歷的時候,出現意料之外的修改,導致意想不到的結果

下面通過乙個簡單的例子分析fail-fast產生的原因

@test

public

void

failfasttest()

}

**執行結果

通過控制台輸出報錯資訊,可以看到concurrentmodificationexception異常是呼叫iterator.next()方法的時候跑丟擲的,進入到next()方法

public e next()

可以看到next()方法在每次呼叫的時候,會先呼叫checkforcomdification()方法,進入到checkforcomdification()方法

final

void

checkforcomodification()

**比較簡單,當modcountexpectedmodcount不相等的時候,就丟擲concurrentmodficationexception異常

modcountarraylist中的乙個成員變數,表示的是arraylist被修改的次數,每次呼叫arraylsitadd(e e)/remove()方法時,modcount++

expectedmodcountarraylist中的乙個內部類itr的成員變數,其值是在arraylist.iterator()方法被呼叫的時候初始化的,取初始化那一刻的modcount的值。表示的是arraylist預計被修改的次數

當我們在對arraylist進行迭代的時候,對集合進行修改,就會產生modecount != expectedmodcount,程式丟擲concurrentmodficationexception

fail-fast 更多是在多執行緒場景下產生的,上面的例子只是為了簡單講解 fail-fast 產生的原因

掃碼關注我,一起學習,一起進步

softirq機制分析

軟中斷的含義就是模仿硬中斷的實現方式,軟就是軟體模擬的意思。它處於中斷的下半部執行,目的是想要使中斷上半部快速執行完畢。耗時的一些工作放到下半部去執行。避免丟中斷和系統響應慢的問題。在interrupt.h中定義了軟中斷號。enum hi softirq 0,timer softirq,net tx...

NodeJs ReadStream機制分析

讀了一下午源 作者寫的 太難懂了,洋洋灑灑,勉強看懂。readstream有兩個模式,即flow模式和readable模式,一旦設定成一種模式,最好不要切換成另一種。flow模式採用好處是可以控制速度,常見用法為 readable.on data function data readable.on ...

linux fork COW機制分析

在linux系統中通過系統呼叫fork clone來建立乙個新的程序,建立程序的過程中根據clone flags會選擇複製資源還是公用乙份資源,通常資源包括 開啟的檔案files struct,檔案系統fs struct,訊號處理signal,記憶體資源mm struct,其中mm struct不僅...