--- a/jdk/src/java.base/share/classes/java/net/URLConnection.java Mon Aug 08 11:04:57 2016 -0700
+++ b/jdk/src/java.base/share/classes/java/net/URLConnection.java Mon Aug 08 13:57:51 2016 -0700
@@ -291,12 +291,7 @@
/**
* @since 1.1
*/
- private static FileNameMap fileNameMap;
-
- /**
- * @since 1.2.2
- */
- private static boolean fileNameMapLoaded = false;
+ private static volatile FileNameMap fileNameMap;
/**
* Loads filename map (a mimetable) from a data file. It will
@@ -308,18 +303,21 @@
* @since 1.2
* @see #setFileNameMap(java.net.FileNameMap)
*/
- public static synchronized FileNameMap getFileNameMap() {
- if ((fileNameMap == null) && !fileNameMapLoaded) {
- fileNameMap = sun.net.www.MimeTable.loadTable();
- fileNameMapLoaded = true;
+ public static FileNameMap getFileNameMap() {
+ FileNameMap map = fileNameMap;
+
+ if (map == null) {
+ fileNameMap = map = new FileNameMap() {
+ private FileNameMap internalMap =
+ sun.net.www.MimeTable.loadTable();
+
+ public String getContentTypeFor(String fileName) {
+ return internalMap.getContentTypeFor(fileName);
+ }
+ };
}
- return new FileNameMap() {
- private FileNameMap map = fileNameMap;
- public String getContentTypeFor(String fileName) {
- return map.getContentTypeFor(fileName);
- }
- };
+ return map;
}
/**