--- a/jdk/src/share/classes/sun/awt/AppContext.java Wed Oct 09 15:34:53 2013 +0400
+++ b/jdk/src/share/classes/sun/awt/AppContext.java Wed Oct 09 20:59:08 2013 +0400
@@ -167,6 +167,9 @@
*/
private static volatile AppContext mainAppContext = null;
+ private static class GetAppContextLock {};
+ private final static Object getAppContextLock = new GetAppContextLock();
+
/*
* The hash map associated with this AppContext. A private delegate
* is used instead of subclassing HashMap so as to avoid all of
@@ -309,14 +312,16 @@
// if no contexts have been created yet. This covers standalone apps
// and excludes applets because by the time applet starts
// a number of contexts have already been created by the plugin.
- if (numAppContexts.get() == 0) {
- if (System.getProperty("javaplugin.version") == null &&
- System.getProperty("javawebstart.version") == null) {
- initMainAppContext();
- } else if (System.getProperty("javafx.version") != null &&
- threadGroup.getParent() != null) {
- // Swing inside JavaFX case
- SunToolkit.createNewAppContext();
+ synchronized (getAppContextLock) {
+ if (numAppContexts.get() == 0) {
+ if (System.getProperty("javaplugin.version") == null &&
+ System.getProperty("javawebstart.version") == null) {
+ initMainAppContext();
+ } else if (System.getProperty("javafx.version") != null &&
+ threadGroup.getParent() != null) {
+ // Swing inside JavaFX case
+ SunToolkit.createNewAppContext();
+ }
}
}