Author: manik.surtani(a)jboss.com
Date: 2009-03-19 06:20:25 -0400 (Thu, 19 Mar 2009)
New Revision: 7922
Modified:
core/branches/flat/src/main/java/org/horizon/lock/LockManagerImpl.java
core/branches/flat/src/main/java/org/horizon/util/concurrent/locks/containers/AbstractPerEntryLockContainer.java
core/branches/flat/src/main/java/org/horizon/util/concurrent/locks/containers/OwnableReentrantPerEntryLockContainer.java
core/branches/flat/src/main/java/org/horizon/util/concurrent/locks/containers/ReentrantPerEntryLockContainer.java
Log:
HORIZON-40 - Create a lock-per-entry lock manager
Modified: core/branches/flat/src/main/java/org/horizon/lock/LockManagerImpl.java
===================================================================
--- core/branches/flat/src/main/java/org/horizon/lock/LockManagerImpl.java 2009-03-19
10:06:23 UTC (rev 7921)
+++ core/branches/flat/src/main/java/org/horizon/lock/LockManagerImpl.java 2009-03-19
10:20:25 UTC (rev 7922)
@@ -69,7 +69,7 @@
public void startLockManager() {
lockContainer = configuration.isUseLockStriping() ?
transactionManager == null ? new
ReentrantStripedLockContainer(configuration.getConcurrencyLevel()) : new
OwnableReentrantStripedLockContainer(configuration.getConcurrencyLevel(),
invocationContextContainer) :
- transactionManager == null ? new ReentrantPerEntryLockContainer() : new
OwnableReentrantPerEntryLockContainer(invocationContextContainer);
+ transactionManager == null ? new
ReentrantPerEntryLockContainer(configuration.getConcurrencyLevel()) : new
OwnableReentrantPerEntryLockContainer(configuration.getConcurrencyLevel(),
invocationContextContainer);
}
public Object getLockOwner(InvocationContext ctx) {
Modified:
core/branches/flat/src/main/java/org/horizon/util/concurrent/locks/containers/AbstractPerEntryLockContainer.java
===================================================================
---
core/branches/flat/src/main/java/org/horizon/util/concurrent/locks/containers/AbstractPerEntryLockContainer.java 2009-03-19
10:06:23 UTC (rev 7921)
+++
core/branches/flat/src/main/java/org/horizon/util/concurrent/locks/containers/AbstractPerEntryLockContainer.java 2009-03-19
10:20:25 UTC (rev 7922)
@@ -13,8 +13,12 @@
*/
public abstract class AbstractPerEntryLockContainer implements LockContainer {
- ConcurrentMap<Object, Lock> locks = new ConcurrentHashMap<Object,
Lock>();
+ protected final ConcurrentMap<Object, Lock> locks;
+ protected AbstractPerEntryLockContainer(int concurrencyLevel) {
+ locks = new ConcurrentHashMap<Object, Lock>(16, .75f, concurrencyLevel);
+ }
+
protected abstract Lock newLock();
public final Lock getLock(Object key) {
Modified:
core/branches/flat/src/main/java/org/horizon/util/concurrent/locks/containers/OwnableReentrantPerEntryLockContainer.java
===================================================================
---
core/branches/flat/src/main/java/org/horizon/util/concurrent/locks/containers/OwnableReentrantPerEntryLockContainer.java 2009-03-19
10:06:23 UTC (rev 7921)
+++
core/branches/flat/src/main/java/org/horizon/util/concurrent/locks/containers/OwnableReentrantPerEntryLockContainer.java 2009-03-19
10:20:25 UTC (rev 7922)
@@ -15,7 +15,8 @@
private InvocationContextContainer icc;
- public OwnableReentrantPerEntryLockContainer(InvocationContextContainer icc) {
+ public OwnableReentrantPerEntryLockContainer(int concurrencyLevel,
InvocationContextContainer icc) {
+ super(concurrencyLevel);
this.icc = icc;
}
Modified:
core/branches/flat/src/main/java/org/horizon/util/concurrent/locks/containers/ReentrantPerEntryLockContainer.java
===================================================================
---
core/branches/flat/src/main/java/org/horizon/util/concurrent/locks/containers/ReentrantPerEntryLockContainer.java 2009-03-19
10:06:23 UTC (rev 7921)
+++
core/branches/flat/src/main/java/org/horizon/util/concurrent/locks/containers/ReentrantPerEntryLockContainer.java 2009-03-19
10:20:25 UTC (rev 7922)
@@ -11,6 +11,10 @@
*/
public class ReentrantPerEntryLockContainer extends AbstractPerEntryLockContainer {
+ public ReentrantPerEntryLockContainer(int concurrencyLevel) {
+ super(concurrencyLevel);
+ }
+
protected Lock newLock() {
return new ReentrantLock();
}
Show replies by date