Author: rgoers
Date: Tue Nov 16 08:05:24 2010
New Revision: 1035550

URL: http://svn.apache.org/viewvc?rev=1035550&view=rev
Log:
Use ConcurrentMap instead of synchronization

Modified:
    
commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/cache/DefaultFilesCache.java

Modified: 
commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/cache/DefaultFilesCache.java
URL: 
http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/cache/DefaultFilesCache.java?rev=1035550&r1=1035549&r2=1035550&view=diff
==============================================================================
--- 
commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/cache/DefaultFilesCache.java
 (original)
+++ 
commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/cache/DefaultFilesCache.java
 Tue Nov 16 08:05:24 2010
@@ -22,6 +22,8 @@ import org.apache.commons.vfs2.FileSyste
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 
 /**
  * A {...@link org.apache.commons.vfs2.FilesCache} implementation.<br>
@@ -35,8 +37,8 @@ public class DefaultFilesCache extends A
 {
 
     /** The FileSystem cache */
-    private final Map<FileSystem, Map<FileName, FileObject>> filesystemCache =
-          new HashMap<FileSystem, Map<FileName, FileObject>>(10);
+    private final ConcurrentMap<FileSystem, ConcurrentMap<FileName, 
FileObject>> filesystemCache =
+          new ConcurrentHashMap<FileSystem, ConcurrentMap<FileName, 
FileObject>>(10);
 
     public void putFile(final FileObject file)
     {
@@ -56,13 +58,13 @@ public class DefaultFilesCache extends A
         files.clear();
     }
 
-    protected Map<FileName, FileObject> getOrCreateFilesystemCache(FileSystem 
filesystem)
+    protected ConcurrentMap<FileName, FileObject> 
getOrCreateFilesystemCache(FileSystem filesystem)
     {
-        Map<FileName, FileObject> files = filesystemCache.get(filesystem);
+        ConcurrentMap<FileName, FileObject> files = 
filesystemCache.get(filesystem);
         if (files == null)
         {
-            files = new HashMap<FileName, FileObject>();
-            filesystemCache.put(filesystem, files);
+            filesystemCache.putIfAbsent(filesystem, new 
ConcurrentHashMap<FileName, FileObject>());
+            files = filesystemCache.get(filesystem);
         }
 
         return files;


Reply via email to