package com.revolsys.collection.list; import java.util.List; import java.util.function.Supplier; public class ThreadLocalList<T> extends AbstractDelegatingList<T> { private final ThreadLocal<List<T>> localList = new ThreadLocal<>(); private Supplier<List<T>> factory; public ThreadLocalList() { this(Lists.factoryArray()); } public ThreadLocalList(final Supplier<List<T>> factory) { this.factory = factory; } @Override public void clear() { this.localList.set(null); } @Override protected List<T> getList() { List<T> list = this.localList.get(); if (list == null) { list = this.factory.get(); this.localList.set(list); } return list; } }