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