--- old/src/share/classes/java/lang/ClassLoader.java Thu Feb 24 16:21:41 2011 +++ new/src/share/classes/java/lang/ClassLoader.java Thu Feb 24 16:21:39 2011 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1628,20 +1628,25 @@ * @since 1.2 */ protected Package getPackage(String name) { + Package pkg; synchronized (packages) { - Package pkg = packages.get(name); - if (pkg == null) { - if (parent != null) { - pkg = parent.getPackage(name); - } else { - pkg = Package.getSystemPackage(name); + pkg = packages.get(name); + } + if (pkg == null) { + if (parent != null) { + pkg = parent.getPackage(name); + } else { + pkg = Package.getSystemPackage(name); + } + if (pkg != null) { + synchronized (packages) { + if (packages.get(name) != null) { + packages.put(name, pkg); + } } - if (pkg != null) { - packages.put(name, pkg); - } } - return pkg; } + return pkg; } /**