Drools supports parallel execution mode. One session can be executed by multiple threads.
Note
Note that this feature is not supported in Drools 5.5.0.Final. It might be reintroduced in future; for now, keep this in mind and take this information as a curiosity.
The Rete network is split into multiple partitions. Each partition is handled by a PartitionTaskManager
object. It manages a list of suspended propagations and makes sure that only one of them is being executed at a time over this partition. When a fact is propagated through the network, it may go through one or more partitions. Once a propagation reaches the boundary between two partitions, the other partition's PartitionTaskManager
is notified and the current propagation is transferred to its list of propagations. The suspended propagation then waits in this list until the other partition manager is ready to take it further.
How...