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