You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directmemory.apache.org by no...@apache.org on 2012/11/01 13:08:21 UTC

svn commit: r1404551 - /directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/PointerImpl.java

Author: noctarius
Date: Thu Nov  1 12:08:21 2012
New Revision: 1404551

URL: http://svn.apache.org/viewvc?rev=1404551&view=rev
Log:
DIRECTMEMORY-57 Pointer.free should be atomic / thread safe

Modified:
    directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/PointerImpl.java

Modified: directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/PointerImpl.java
URL: http://svn.apache.org/viewvc/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/PointerImpl.java?rev=1404551&r1=1404550&r2=1404551&view=diff
==============================================================================
--- directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/PointerImpl.java (original)
+++ directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/PointerImpl.java Thu Nov  1 12:08:21 2012
@@ -22,6 +22,9 @@ package org.apache.directmemory.memory;
 import static java.lang.String.format;
 import static java.lang.System.currentTimeMillis;
 
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicLong;
+
 import org.apache.directmemory.memory.buffer.MemoryBuffer;
 
 public class PointerImpl<T>
@@ -38,9 +41,9 @@ public class PointerImpl<T>
 
     public long hits;
 
-    public boolean free;
+    public AtomicBoolean free = new AtomicBoolean( true );
 
-    public long lastHit;
+    public AtomicLong lastHit = new AtomicLong();
 
     public int bufferNumber;
 
@@ -72,15 +75,15 @@ public class PointerImpl<T>
     @Override
     public String toString()
     {
-        return format( "%s[%s] %s free", getClass().getSimpleName(), getSize(), ( free ? "" : "not" ) );
+        return format( "%s[%s] %s free", getClass().getSimpleName(), getSize(), ( isFree() ? "" : "not" ) );
     }
 
     @Override
     public void reset()
     {
-        free = true;
+        free.set( true );
         created = 0;
-        lastHit = 0;
+        lastHit.set( 0 );
         hits = 0;
         expiresIn = 0;
         clazz = null;
@@ -90,7 +93,7 @@ public class PointerImpl<T>
     @Override
     public boolean isFree()
     {
-        return free;
+        return free.get();
     }
 
     @Override
@@ -118,7 +121,7 @@ public class PointerImpl<T>
     @Override
     public void hit()
     {
-        lastHit = System.currentTimeMillis();
+        lastHit.set( System.currentTimeMillis() );
         hits++;
     }
 
@@ -137,7 +140,7 @@ public class PointerImpl<T>
     @Override
     public void setFree( boolean free )
     {
-        this.free = free;
+        this.free.set( free );
     }
 
     @Override