public static void cleanupThreads(ClassLoader contextClassLoader) { for (Iterator<Memo> it = memos.iterator(); it.hasNext(); ) { Memo memo = it.next(); if (memo.thread.getContextClassLoader() == contextClassLoader) { if (memo.thread.isAlive()) { memo.finalizer.stopRunning(); memo.thread.interrupt(); logger.log(Level.INFO, "Guava finalizer thread "+memo.thread+" stopped"); } it.remove(); } else { logger.log(Level.INFO, "Guava finalizer thread "+memo.thread+" does not have matching contextClassLoader, not stopped"); } } }