All API-calls are synchronous, executed by the calling thread. All calls to the API you do from within a JavaDelegate (or any other listener that is called as part of the process) are run in the same transaction AND thread. This is by design, to make sure process state is consistent between wait-states.
If you want to have the second process started in another thread, make the first activity in process B asynchronous. The process B will be started synchronously in process A's transaction, but won't run the actual activity - rather, it's added as a job and executed in another thread and this will continue running process B, independent of process A's state/execution.
A better way might be to use a call-activity, instead of starting the process B using the runtimeService. Marking this call activity as async=true will have the subprocess be executed in a separate thread (by the job-executor). This will make process B an integral part of process A and can be used to wait on the completion of process B, executing other stuff in process A (eg. using parallel gateway in A)