fail-fast
(快速失敗)機制是集合中比較常見的錯誤檢測機制,防止在對集合進行遍歷的時候,出現意料之外的修改,導致意想不到的結果
下面通過乙個簡單的例子分析fail-fast
產生的原因
@test
public
void
failfasttest()
}
**執行結果
通過控制台輸出報錯資訊,可以看到concurrentmodificationexception
異常是呼叫iterator.next()
方法的時候跑丟擲的,進入到next()
方法
public e next()
可以看到next()
方法在每次呼叫的時候,會先呼叫checkforcomdification()
方法,進入到checkforcomdification()
方法
final
void
checkforcomodification()
**比較簡單,當modcount
與expectedmodcount
不相等的時候,就丟擲concurrentmodficationexception
異常
modcount
是arraylist
中的乙個成員變數,表示的是arraylist
被修改的次數,每次呼叫arraylsit
的add(e e)
/remove()
方法時,modcount++
expectedmodcount
是arraylist
中的乙個內部類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不僅...