1. A method for parallel processing implemented by a computer having a plurality of processors including a main processor for executing a main process and at least one parallel needle processor for executing threads initiated by the main process, the computer also having a memory shared by the plurality of processors, wherein the execution time of the main process is reduced by decreasing the overhead associated with separation from the main process of a plurality of separable threads which are executed in parallel by the plurality of processors when available, the method comprising: (a) determining, by the main processor, if said at least one parallel needle processor is available to execute a first thread; (b) reserving, by the main processor, the exclusive right to use the parallel needle processor responsive to the parallel needle processor being determined to be available, and executing the first thread on the main processor responsive to the parallel needle processor not being available; (c) constructing a packaging data structure including the first thread, by the main processor, and transferring the packaging data structure for execution on the reserved needle processor responsive to the reservation being successful; (d) creating, by the main processor, a future object in the main process while the first thread is being executed on the reserved needle processor so as to allow the main process to continue execution prior to obtaining the result; (e) utilizing, by the main processor, the future object in the main process as if the future object were the result of the execution of the first thread; (f) returning a result of the execution of the first thread to the memory so as to resolve the future object.