On 10/12/2014 12:52 PM, Peter Levart wrote:

On 10/12/2014 12:40 PM, Peter Levart wrote:
I also wonder if the lazy loading of Manifest in CachedManifest is necessary. If you look at the only usage of CachedManifest.getManifest() method (in Package.defineSystemPackage()):

        CachedManifest cachedManifest = createCachedManifest(fn);
pkgs.putIfAbsent(name, new Package(name, cachedManifest.getManifest(),
                cachedManifest.getURL()));

...you can see that getManifest() is called immediately after obtaining the CacheManifest. So there's no need for lazy loading. Loading the Manifest in CachedManifest constructor would be just fine.


..Ah, you can do that, yes, but then you have to use synchronization in createCachedManifest in order to avoid redundant concurrent loading of Manifest. And that would be a good thing since then you avoid concurrent resolving of fileName -> URL too in one go.

Peter


Scrap that. I see now what you wanted to achieve. You wanted to avoid synchronization on a single monitor when loading manifests while avoiding multiple concurrent loading of same manifest. Lazy loading is fine than.

Regards, Peter

Reply via email to