當我強烈引用ThreadLocal
保存資源,如下面的示例所示;ThreadLocal資源
private final static ThreadLocal<InputStream> resource = new ThreadLocal<InputStream>()
{
@Override
protected InputStream initialValue()
{
ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream input = loader.getResourceAsStream("doc/doc.xml");
if (input == null) throw new RuntimeException("Could not locate doc.xml");
return input;
}
};
在什麼時間點/範圍將在ThreadLocal
舉行的InputStream
不是avaliable。我想知道,如果在某個時候沒有使用ThreadLocal
對象,JVM將垃圾收集其引用,因此訪問嵌套的InputStream
將無法使用。
javadoc表明:
線程本地 實例及其副本的所有受垃圾收集 (除非到 其他引用這些副本存在)。
如果確實如此,那麼如何確保副本始終可用?
確實非常好的建議。謝謝 – Bitmap