我們知道,對於Collection而言,在對其iterator的過程中,是不能調用Collection的remove等方法的,這樣會報java.util.ConcurrentModificationException異常,通常用iterator的remove方法來達到目的,示例程序如下:
但是今天在公司寫的代碼,忽然報出了java.util.ConcurrentModificationException異常,只是普通的遍歷一個list,添加一個userid到set中,代碼如下:
這個情況下就會報出ConcurrentModificationException異常,令人百思不得其解。
調試了很久,也寫了一個示例程序,忽然發現,程序是在多線程環境下,這樣,set是非線程安全的,因此,給其加上鎖就行了,好簡單,唉。