private Entry getEntryAfterMiss(ThreadLocal<?> key, int i, Entry e) {<br> Entry[] tab = table;<br> int len = tab.length;<br><br> while (e != null) {<br> ThreadLocal<?> k = e.get();<br> if (k == key)<br> return e;<br> if (k == null)<br> expungeStaleEntry(i);<br> else<br> i = nextIndex(i, len);<br> e = tab[i];<br> }<br> return null;<br>}<br>
[code]@Test
void test2() throws InterruptedException {
ThreadLocal local = new ThreadLocal();
local.set(new Test());
local = null;
System.gc();
for (int i = 0; i key) { key, int i, Entry e) { k = e.get();