我试图通过在多个线程中使用相同的 SimpleDateFormat 实例来复制错误。但是,我遇到了另一个问题,没有找到任何答案。
这个简单的代码块复制了我看到的问题。
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);
java 7(1.7_0_21)下这个操作的结果如下
d1 = java.text.SimpleDateFormat@c5bfbc60
d2 = java.text.SimpleDateFormat@c5bfbc60
d3 = java.text.SimpleDateFormat@b049fd40
如您所见,尽管我为 d1 和 d2 创建了新对象,但它们最终成为相同的引用。d3 最终成为一个新实例,因为模式不同。
java 编译/运行时是否进行此优化?任何指示都会有所帮助