1. A system for adaptive auto-pipelining of a stream processing application having at least one thread, said system comprising: a monitoring module connected to said stream processing application manager, said monitoring module monitors the stream processing application during the runtime to: identify threads in the stream processing application that execute operators in a data flow graph, determine an amount of work that each of the threads are performing on operators of the logical data flow graph, wherein said monitoring module measures performance of the stream processing application to determine if a previous optimization process increased the performance of the stream processing application relative to a previous time period of execution of the stream processing application, the previous optimization step including at least one of adding at least one thread to the stream processing application and removing at least one thread from the stream processing application; a processor connected to said monitoring module, said processor identifies at least one operator in the data flow graph to add at least one additional thread based on the monitoring of the stream processing application during the runtime; and a stream processing application manager for initiating runtime of the stream processing application, wherein said stream processing application manager reverses the previous optimization step when the previous optimization step does not increase the performance of the stream processing application, wherein said stream processing application manager at least one of removes the added thread from the stream processing application and adds the removed thread to the stream processing application.