为什么SimpleDateFormat构造函数为不同的Threads返回相同的Object?

时间:2017-09-10 07:47:09

标签: java multithreading design-patterns

我正在摆弄Threads并尝试使用以下代码

 import java.text.SimpleDateFormat;

 public class SimpleDateFormatTest {    

    public static void main(String[] args) {


      Thread A=new Thread(()->{
          SimpleDateFormat a=new SimpleDateFormat("yyyy-MM-dd");
          System.out.println(Thread.currentThread().getName()+" "+a);
          });
      Thread B=new Thread(()->{
          SimpleDateFormat b=new SimpleDateFormat("yyyy-MM-dd");
          System.out.println(Thread.currentThread().getName()+" "+b);
          });   


      A.start();
      B.start();

    }

}

我得到的输出如下:

  • Thread-0 java.text.SimpleDateFormat@f67a0200
  • Thread-1 java.text.SimpleDateFormat@f67a0200

为了线程安全起见,当我为两个单独的线程局部变量(a& b)分配单独的新对象时,有人可以告诉我为什么同一个对象被传递给两个线程吗?

先谢谢!!

0 个答案:

没有答案