mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
reduce thread blocking time
This commit is contained in:
@@ -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<File, File[]> myMap = new THashMap<File, File[]>();
|
||||
private final Map<File, File[]> myMap = Collections.synchronizedMap(new THashMap<File, File[]>());
|
||||
|
||||
@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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user