[jboss-svn-commits] JBL Code SVN: r29843 - labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/coordinator.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Oct 28 05:20:29 EDT 2009
Author: jhalliday
Date: 2009-10-28 05:20:29 -0400 (Wed, 28 Oct 2009)
New Revision: 29843
Modified:
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/coordinator/ReaperElement.java
Log:
Use AtomicInteger for biasCounter to reduce lock contention. JBTM-624
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/coordinator/ReaperElement.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/coordinator/ReaperElement.java 2009-10-28 07:12:30 UTC (rev 29842)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/coordinator/ReaperElement.java 2009-10-28 09:20:29 UTC (rev 29843)
@@ -37,6 +37,8 @@
import com.arjuna.ats.arjuna.coordinator.Reapable;
import com.arjuna.ats.arjuna.logging.FacilityCode;
+import java.util.concurrent.atomic.AtomicInteger;
+
public class ReaperElement implements Comparable<ReaperElement>
{
@@ -117,16 +119,20 @@
// bias is used to distinguish/sort instances with the same _absoluteTimeoutMills
// as using Uid for this purpose is expensive. JBTM-611
- private static int biasCounter = 0;
+ private static int MAX_BIAS = 1000000;
+ private static AtomicInteger biasCounter = new AtomicInteger();
- public static synchronized int getBiasCounter()
+ private static int getBiasCounter()
{
- if(biasCounter >= 1000000-1) {
- biasCounter = 0;
- } else {
- biasCounter++;
- }
- return biasCounter;
+ int value = 0;
+ do {
+ value = biasCounter.getAndIncrement();
+ if(value == MAX_BIAS) {
+ biasCounter.set(0);
+ }
+ } while(value >= MAX_BIAS);
+
+ return value; // range 0 to MAX_BIAS-1 inclusive.
}
public int _timeout;
More information about the jboss-svn-commits
mailing list