From 3bdf9aad6735cfc471ccce91e7136da2efa7ad24 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Tue, 25 Jun 2013 09:53:10 +0400 Subject: [PATCH] reduce thread blocking time --- .../jetbrains/jps/incremental/FSCache.java | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/FSCache.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/FSCache.java index 75b5a9910f7a..689d2fea362a 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/FSCache.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/FSCache.java @@ -19,6 +19,7 @@ import gnu.trove.THashMap; import org.jetbrains.annotations.Nullable; import java.io.File; +import java.util.Collections; import java.util.Map; /** @@ -37,24 +38,20 @@ public class FSCache { private static final File[] NULL_VALUE = new File[0]; private static final File[] EMPTY_FILE_ARRAY = new File[0]; - private final Map myMap = new THashMap(); + private final Map myMap = Collections.synchronizedMap(new THashMap()); @Nullable public File[] getChildren(File file) { - synchronized (myMap) { - final File[] children = myMap.get(file); - if (children != null) { - return children == NULL_VALUE? null : children; - } - final File[] files = file.listFiles(); - myMap.put(file, files == null? NULL_VALUE : (files.length == 0? EMPTY_FILE_ARRAY : files)); - return files; + final File[] children = myMap.get(file); + if (children != null) { + return children == NULL_VALUE? null : children; } + final File[] files = file.listFiles(); + myMap.put(file, files == null? NULL_VALUE : (files.length == 0? EMPTY_FILE_ARRAY : files)); + return files; } public void clear() { - synchronized (myMap) { - myMap.clear(); - } + myMap.clear(); } }