zoukankan      html  css  js  c++  java
  • SimpleDateFormat线程不安全问题处理

    在工作中,通过SimpleDateFormat将字符串类型转为日期类型时,发现有时返回的日期类型出错,调用方法如下:

    public final class DateUtil {
    
        static final DateFormat YYYYMMDD_FORMAT = new java.text.SimpleDateFormat("yyyyMMdd");
    
        /**
         * 把yyyyMMdd格式字符串转换成 java.util.Date
         *
         * @param dateStr
         * @return
         */
        public static java.util.Date getUtilDateByShortStr(String datestr) {
            try {
                return YYYYMMDD_FORMAT.parse(datestr);
            } catch (ParseException e) {
                throw new SasException("error.dateformate");
            }
        }
    }

    在多线程调用的情况下,返回的日期型数据与传进去的字符串型日期有可能不一致,即SimpleDateFormat是线程不安全的,所以要把以上方法改造成线程安全的:

    public final class DateUtil {
    
        static final DateFormat YYYYMMDD_FORMAT = new java.text.SimpleDateFormat("yyyyMMdd");
    
        /**
         * 把yyyyMMdd格式字符串转换成 java.util.Date
         *
         * @param dateStr
         * @return
         */
        public synchronized static java.util.Date getUtilDateByShortStr(String datestr) {
            try {
                return YYYYMMDD_FORMAT.parse(datestr);
            } catch (ParseException e) {
                throw new SasException("error.dateformate");
            }
        }
    }



  • 相关阅读:
    2020.9.21
    企业应用架构模式003——对象-关系结构模式
    企业应用架构模式002
    企业应用架构模式001
    代码大全003/
    代码大全002/
    每日总结
    数论必刷题
    Tarjan求割点(割顶) 割边(桥)
    Luogu 2018 秋令营 Test 2
  • 原文地址:https://www.cnblogs.com/atai/p/6141889.html
Copyright © 2011-2022 走看看