1. A method for processing multiple streams of data on a plurality of execution threads comprising the steps of: selecting data from at least one of a plurality of data sources in dependence on an availability of storage in a data storage means, wherein each data source comprises a plurality of data instances, each data instance being a quanta of data that may be processed without reference to other data in and incoming data stream, wherein each data source provides a minimum data instance count to the data selecting step, and wherein a data source is selected in dependence on the minimum data instance count; allocating an address in the data storage means for the selected data; loading the selected data into the allocated data address; constructing an execution task that includes an identifier of the selected data source, the data address, and a code execution address; queuing the execution task with other previously constructed execution tasks; determining which processing resources are required for each task; selecting tasks for execution in dependence on an availability of the processing resources; distributing the selected tasks for execution across a plurality of processing threads; determining whether any of the threads will stall due to data dependencies; repeatedly selecting a subset of the threads that will not stall due to said the data dependencies; and executing the subset of the threads.