Drools supports parallel execution mode. One session can be executed by multiple threads.
The Rete network is split into multiple partitions. Each partition is handled by
PartitionTaskManager. 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.
Each knowledge ...