import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
class ThreadSafeIteratorExample {
public static void main
(String[] args
) {
List<String> myList = new CopyOnWriteArrayList<String>();
myList.add("1");
myList.add("2");
myList.add("3");
myList.add("4");
myList.add("5");
Iterator<String> it = myList.iterator();
while(it.hasNext()){
System.
out.
println("List Value:"+value
); if(value.equals("3")){
myList.remove("4");
myList.add("6");
myList.add("7");
}
}
System.
out.
println("List Size:"+myList.
size());
Map
<String,String
> myMap
= new ConcurrentHashMap
<String,String
>(); myMap.put("1", "1");
myMap.put("2", "2");
myMap.put("3", "3");
Iterator<String> it1 = myMap.keySet().iterator();
while(it1.hasNext()){
System.
out.
println("Map Value:"+myMap.
get(key
)); if(key.equals("1")){
myMap.remove("3");
myMap.put("4", "4");
myMap.put("5", "5");
}
}
System.
out.
println("Map Size:"+myMap.
size()); }
}
CmltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CmltcG9ydCBqYXZhLnV0aWwuTGlzdDsKaW1wb3J0IGphdmEudXRpbC5NYXA7CmltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50SGFzaE1hcDsKaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkNvcHlPbldyaXRlQXJyYXlMaXN0OwoKIGNsYXNzIFRocmVhZFNhZmVJdGVyYXRvckV4YW1wbGUgewoKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCgkJTGlzdDxTdHJpbmc+IG15TGlzdCA9IG5ldyBDb3B5T25Xcml0ZUFycmF5TGlzdDxTdHJpbmc+KCk7CgkJCgkJbXlMaXN0LmFkZCgiMSIpOwoJCW15TGlzdC5hZGQoIjIiKTsKCQlteUxpc3QuYWRkKCIzIik7CgkJbXlMaXN0LmFkZCgiNCIpOwoJCW15TGlzdC5hZGQoIjUiKTsKCQkKCQlJdGVyYXRvcjxTdHJpbmc+IGl0ID0gbXlMaXN0Lml0ZXJhdG9yKCk7CgkJd2hpbGUoaXQuaGFzTmV4dCgpKXsKCQkJU3RyaW5nIHZhbHVlID0gaXQubmV4dCgpOwoJCQlTeXN0ZW0ub3V0LnByaW50bG4oIkxpc3QgVmFsdWU6Iit2YWx1ZSk7CgkJCWlmKHZhbHVlLmVxdWFscygiMyIpKXsKCQkJCW15TGlzdC5yZW1vdmUoIjQiKTsKCQkJCW15TGlzdC5hZGQoIjYiKTsKCQkJCW15TGlzdC5hZGQoIjciKTsKCQkJfQoJCX0KCQlTeXN0ZW0ub3V0LnByaW50bG4oIkxpc3QgU2l6ZToiK215TGlzdC5zaXplKCkpOwoJCQoJCU1hcDxTdHJpbmcsU3RyaW5nPiBteU1hcCA9IG5ldyBDb25jdXJyZW50SGFzaE1hcDxTdHJpbmcsU3RyaW5nPigpOwoJCW15TWFwLnB1dCgiMSIsICIxIik7CgkJbXlNYXAucHV0KCIyIiwgIjIiKTsKCQlteU1hcC5wdXQoIjMiLCAiMyIpOwoJCQoJCUl0ZXJhdG9yPFN0cmluZz4gaXQxID0gbXlNYXAua2V5U2V0KCkuaXRlcmF0b3IoKTsKCQl3aGlsZShpdDEuaGFzTmV4dCgpKXsKCQkJU3RyaW5nIGtleSA9IGl0MS5uZXh0KCk7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigiTWFwIFZhbHVlOiIrbXlNYXAuZ2V0KGtleSkpOwoJCQlpZihrZXkuZXF1YWxzKCIxIikpewoJCQkJbXlNYXAucmVtb3ZlKCIzIik7CgkJCQlteU1hcC5wdXQoIjQiLCAiNCIpOwoJCQkJbXlNYXAucHV0KCI1IiwgIjUiKTsKCQkJfQoJCX0KCQkKCQlTeXN0ZW0ub3V0LnByaW50bG4oIk1hcCBTaXplOiIrbXlNYXAuc2l6ZSgpKTsKCX0KCn0=