What values will threadLocal1 and threadLocal2 have after this code is executed?
ThreadLocal<Integer> threadLocal1 = ThreadLocal.withInitial(() -> 0);
ThreadLocal<Integer> threadLocal2 = new ThreadLocal<>();
// set
threadLocal1.set(1);
threadLocal2.set(1);
// remove
threadLocal1.remove();
threadLocal2.remove();