1. A method of performing a fork and join by a supervisory thread executing in an active stream of a plurality of hardware streams on a multi-streaming processor, comprising: requesting an idle stream of the plurality of hardware streams to run a subservient thread; receiving an identification of the idle stream; loading a program counter of the identified idle stream with the address of the first instruction of the subservient thread; loading other components of the subservient thread's context into appropriate elements of the multi-streaming processor; setting a priority map for the identified idle stream; setting a plurality of supervisory control bits for the identified idle stream; starting execution of the subservient thread, wherein the subservient thread executes independently and concurrently with the supervisory thread; completing execution of the supervisory thread; checking the execution status of the subservient thread; and joining operation with the subservient thread.