Thanks for your feedback. I've actually had lots of experience in this now. I did a lot of experimenting and learned some things. Some of these things are probably obsolete with JBPM 5.1. I see that a threading issue was solved yesterday.
Anyway, I was experiencing thread deadlocks when running lots of processes in the same knowledge session in lots of threads simultaneously.
So what I created a pool of knoweldge sessions. I created thin wrappers for the work item handlers so I could pass into the work item which session an asynchronous work item came from. When a work item is complete I grab the session from the pool, grab the work item manager and complete it.
I think the upcoming release will make the knowledge session pool obsolete.