1. A system comprising: a compiler executing on a processor, said compiler determines whether an operator of the streaming application is safe to parallelize based on a definition of the operator and an instance of the definition, the definition of the operator including a template of the operator, the instance of the definition including a modified version of the template, said compiler forms parallel regions within the streaming application when the operator is safe to parallelize, said compiler determines synchronization strategies for the parallel regions, the synchronization strategies being determined based on the definition of the operator and the instance of the definition, said compiler determines that the operator is not safe to parallelize when the operator has selectivity greater than 1, the selectivity being a number of output tuples generated for each input tuple; and a runtime system connected to said compiler executing on said processor, said runtime system enforces the synchronization strategies of the parallel regions, said runtime system performs a shuffle when two adjacent parallel regions include incompatible keys.