新集合也提供了能防止多個程式同時修改一個容器內容的機制。若在一個容器裡反覆,同時另一些程式介入,並在那個容器中插入、刪除或修改一個物件,便會面臨發生衝突的危險。我們可能已傳遞了那個物件,可能它位於我們前面,可能容器的大小在我們呼叫size()後已發生了收縮——我們面臨各種各樣可能的危險。針對這個問題,新的集合庫整合了一套解決機制,能查出除我們的程式自己需要負責的之外的、對容器的其他任何修改。若探測到有其他方面也準備修改容器,便會立即產生一個ConcurrentModificationException(併發修改違例)。我們將這一機制稱為“立即失敗”——它並不用更復雜的演算法在“以後”偵測問題,而是“立即”產生違例。
import java.util.*; /** * Created by Frank * Collection或Map的同步 */ public class Synchronization { Collection c = Collections.synchronizedCollection(new ArrayList()); List list = Collections.synchronizedList(new ArrayList()); Set s = Collections.synchronizedSet(new HashSet()); Map m = Collections.synchronizedMap(new HashMap()); }