new SimpleDateFormat always returns same reference for a given dateFormat
<p><br/>
  I was trying to replicate a bug by using the same instance of SimpleDateFormat across multiple threads. However I got stuck with another problem and did not find any answers to it. </p>

<p>This simple code block replicates the issues I am seeing.</p>

<pre><code>DateFormat d1 = new SimpleDateFormat("ddMMyyyy");
DateFormat d2 = new SimpleDateFormat("ddMMyyyy");
DateFormat d3 = new SimpleDateFormat("ddMMyy");
System.out.println("d1 = " + d1);
System.out.println("d2 = " + d2);
System.out.println("d3 = " + d3);
</code></pre>

<p>The results of this operations under java 7 (1.7_0_21) is as follows </p>

<pre><code>d1 = java.text.SimpleDateFormat@c5bfbc60
d2 = java.text.SimpleDateFormat@c5bfbc60
d3 = java.text.SimpleDateFormat@b049fd40
</code></pre>

<p>As you can see that although I am creating new objects for d1 and d2 they end up being the same reference. d3 ends up being a new instance as pattern is different.<br/></p>

<p>Does java compile/runtime do this optimization? Any pointers will be helpful</p>
