1、java的lamda表達式
函數式接口裏面,有且僅有一個方法(未實現),只有函數式接口才能用lamda表達式。否則就是java的標準普通接口。
書寫的簡單口訣:拷貝小括號,寫死右箭頭,落地大括號。
在java接口中可以用defaut或者static來進行函數的實現,兩者都可以定義多個函數。
2、集合類不安全
liist不安全:報錯異常是
java.util.ConcurrentModificationException
解決辦法:
new Vector<>()
Collections.synchronizedList(new ArrayList<>());
new CopyOnWriteArrayList()(--推薦,因爲是JUC裏面的東西)
set不安全:hashset的底層實現是hashmap,value值都是一個常量
解決:
CopyOnWriteArraySet<>();
map不安全,
解決:
new ConcurrentHashMap<>();
寫時複製:大致思想是在添加元素的時候進行拷貝,添加完之後,原引用指向新的容器。這樣的好處是可以對原容器進行併發的讀,而不需要加鎖。所以CopyOnWrite容器是讀寫分離的思想,讀和寫使用到不同的容器。