У меня есть класс, подобный приведенному ниже, и мне интересно, будет ли он потокобезопасным или может основной поток и поток Loader
могут иметь свои собственные копии mCache
и, следовательно, метод get (..)не удалось получить что-либо из кэша, как это было добавлено в поток загрузчика?Мне нужно отметить это volatile
?
Спасибо!
public class StackExample
{
private final ConcurrentHashMap<String, SoftReference<Bitmap>> mCache = new ConcurrentHashMap<String, SoftReference<Bitmap>>();
private addToCache(String key, Bitmap bitmap)
{
mCache.put(key, bitmap);
}
private Bitmap getBitmap(String key)
{
if(mCache.contains(key))
{
return mCache.get(key);
}
else
{
//add to loading queue
}
}
private class Loader extends Thread
{
@Override
public void run()
{
...//check loading queue and load some images here
mCache.put(keyString, new SoftReference<Bitmap>(loadedBitmap));
}
}
}