> This change adds an option **EnableWaitForParallelLoad** to enable the legacy > behavior where the VM will manage synchronization for multiple threads > loading the same class using a non-parallel capable class loader that have > released the class loader lock. The VM will break the class loader lock for > parallel threads trying to load the class, and wait for the first thread that > initiated loading the class to complete. The subsequent threads will use the > result of the first thread, rather than get a LinkageError: duplicate class > definition for loading the class without synchronization. > Releasing the class loader lock was a common workaround for class loaders > that used a non-hierarchical delegation scheme to avoid deadlock, before > parallel capable class loading was added. > https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/ClassLoader.html#registerAsParallelCapable() > > Tested with tier1-6 and internal applications.
Coleen Phillimore has updated the pull request incrementally with one additional commit since the last revision: Remove assert no longer valid. ------------- Changes: - all: https://git.openjdk.org/jdk/pull/10832/files - new: https://git.openjdk.org/jdk/pull/10832/files/3f5be0ac..59c07651 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=10832&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=10832&range=00-01 Stats: 3 lines in 1 file changed: 3 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/10832.diff Fetch: git fetch https://git.openjdk.org/jdk pull/10832/head:pull/10832 PR: https://git.openjdk.org/jdk/pull/10832