Index: drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java =================================================================== --- drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java (revision 29938) +++ drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java (working copy) @@ -31,6 +31,7 @@ import java.util.Queue; import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; @@ -289,7 +290,7 @@ this.initialFactHandle = initialFactHandle; } - this.actionQueue = new LinkedList(); + this.actionQueue = new ConcurrentLinkedQueue(); this.addRemovePropertyChangeListenerArgs = new Object[]{this}; this.queryResults = Collections.EMPTY_MAP; @@ -1556,7 +1557,7 @@ public void executeQueuedActions() { try { startOperation(); - synchronized ( this.actionQueue ) { + //synchronized ( this.actionQueue ) { if ( !this.actionQueue.isEmpty() && !evaluatingActionQueue ) { evaluatingActionQueue = true; WorkingMemoryAction action = null; @@ -1571,7 +1572,7 @@ } evaluatingActionQueue = false; } - } + //} } finally { endOperation(); } @@ -1582,7 +1583,7 @@ } public void queueWorkingMemoryAction(final WorkingMemoryAction action) { - synchronized ( this.actionQueue ) { + //synchronized ( this.actionQueue ) { try { startOperation(); this.actionQueue.add( action ); @@ -1590,7 +1591,7 @@ } finally { endOperation(); } - } + //} } public void removeLogicalDependencies(final Activation activation,