java.util.ConcurrentModificationException subList问题原因

自己编写一个获取List子集的一个函数,但是在多线程的情况下,会报java.util.ConcurrentModificationException subList错误。
public static<W> List<W> getSubList(List<W> inputlist, int beginIndex,int endIndex){
		List<W> result = null;
		if((beginIndex > endIndex) || list.size() <= beginIndex || list.size() <= endIndex){
			result = null;
		}else if(beginIndex == endIndex){
			result = new ArrayList<W>();
			result.add(list.get(beginIndex));
		}else{
			result = list.subList(beginIndex, endIndex);
			result.add(list.get(endIndex));
		}
		return result;
	}

在一个线程中有一个函数使用inputlist.get(i),会报java.util.ConcurrentModificationException,检查发现在getSubList方法中,
result = list.subList(beginIndex, endIndex);result.add(list.get(endIndex));
这样写会出错,因为是同一个引用,所以应该改成
result = new ArrayList<W>(list.subList(beginIndex, endIndex));
			result.add(list.get(endIndex));

你可能感兴趣的:(java,多线程)