1. A method for ensuring determinacy in states of concurrently shared objects in an application, comprising steps for: using one or more “isolation types” to declare which variables in an application are to be shared by two or more concurrent tasks; wherein each “isolation type” includes a pre-defined deterministic conflict resolution policy for addressing write-write conflicts between two or more of the concurrent tasks; using a fork-join model to specify concurrent execution of the concurrent tasks; providing a runtime system that, during execution of the application, automatically conceptually replicates the declared variables on fork and merges them back together on join, so that each task can work with an independent copy of shared variables; and wherein merging the declared variables back together on join further comprises steps for evaluating the pre-defined deterministic conflict resolution policy of the “isolation type” of each shared variable to determine which of one or more concurrent tasks will contribute to the merge of each shared variable.