public static synchronized  String getImgName()
{
Date date=new Date();
SimpleDateFormat sf=new SimpleDateFormat("yyyyMMdd");
String str=sf.format(date)+date.getTime();
return str;
}public static void main(String[] arg)
{
System.out.println("获得的图片名称为1:"+MyTool.getImgName());
System.out.println("获得的图片名称为2:"+MyTool.getImgName());
System.out.println("获得的图片名称为3:"+MyTool.getImgName());

}调用的时候获得的图片名称为2和获得的图片名称为3返回的字符串一样啊
没有实现同步的效果。
我要的效果是3个获得的图片名称字符串要都不一样。
怎么实现啊。大哥指点一下。

解决方案 »

  1.   


    只输入打印这俩句时返回的字符串不同啊。
    System.out.println("获得的图片名称为1:"+MyTool.getImgName()); 
    System.out.println("获得的图片名称为2:"+MyTool.getImgName()); 打印第三句时
    System.out.println("获得的图片名称为3:"+MyTool.getImgName()); 
    第二句和第三句返回的字符串相同啊。
      

  2.   

    同步指的是多个线程对共享变量实现串行化的访问或者修改。你的这段同步方法中不涉及多个线程的访问,也不涉及什么共享变量,可以把 synchronized 关键字去掉。至于为什么第二和第三个得出来结果是一样的,这是因为现在的计算机太快了!如果需要生成唯一字符串的话,可以改用 UUIDpublic static String getImageName() {
        return UUID.randomUUID().toString();
    }
      

  3.   

    生成的 UUID 串就像 CSDN 帖子的地址一样,呵呵。
      

  4.   

    呵呵,楼主同步是这样用的吗..?
    顶2楼的,用UUID就好了