为了账号安全,请及时绑定邮箱和手机立即绑定

请问如下代码是为什么?,非常感谢

请问如下代码是为什么?,非常感谢

ibeautiful 2022-10-20 15:15:38
//仅用于测试,无任何业务public class DateFormat2 {    public static SimpleDateFormat parse(){        SimpleDateFormat  adf=new SimpleDateFormat ();      return adf}}//多线程测试上述方法,局部变量应该在线程栈中,每个线程访问该方法后都new一个对象,应该是不同的引用地址,但结果却不是,测试方法如下public class Test {  public static class TestSimpleDateFormatThreadSafe extends Thread {       @Override       public void run() {           while(true) {               try {                   this.join(2000);               } catch (InterruptedException e1) {                   e1.printStackTrace();               }                   try {System.out.println(this.getName()+":"+DateFormat2.parse());} catch (ParseException e) {e.printStackTrace();}           }       }      }public static void main(String[] args) throws ParseException {for (int i = 0; i <3; i++) {new TestSimpleDateFormatThreadSafe().start();}}}
查看完整描述

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

这个问题的关键是不是在于,静态方法中定义的内部变量是否属于类或类实例共享级别?  如果是,那么这个是不就相当于public static SimpleDateFormat adf = new SimpleDateFormat();

查看完整回答
反对 回复 2022-10-24
?
aluckdog

TA贡献1847条经验 获得超7个赞

说明你的例子 是不同的SimpleDateFormat对象
但是他们的hashCode()相同 


查看完整回答
反对 回复 2022-10-24
  • 2 回答
  • 0 关注
  • 81 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信