There is no way to do this, by default -UNLESS- you process only contains automatic steps and no wait-states (eg. user task, receive-task, intermediate events) nor async-activities.
You can roll your custom solution though, if you want. I suggest using an executionListener (see userguide) that is notified when the process ends (event="end"). In this listener, you can call a specific method on either a statically referenced service/map or an injected service/map.
This service/map should contains Barriers mapped to process-instance ID's. When you start a process instance, register the process-id in the service, the service creates a barrier and lets's the current thread wait for it. From your execution-listener, when the process ends, you can call the service using the delegateExecution's processInstanceId to release the barrier. ALso build in a check for process-instances that end immediately, so the no threads can get stuck on a barrier that will never be called…