SimpleDateFormat是线程不安全, 关于时间处理推荐进行如下,如果是jdk低于1.7用:public final static String DATE_PATTERN = "yyyy-MM-dd";private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>() { @Override protected DateFormat initialValue() { return new SimpleDateFormat(DATE_TIME_PATTERN); } }; /** * 线程安全的转换 * * @param dateStr * @return * @throws ParseException */ public static Date parseSync(String dateStr) throws ParseException { return threadLocal.get().parse(dateStr); } /** * 线程安全的时间工具类 * * @param date * @return */ public static String formatSync(Date date) { return threadLocal.get().format(date); } jdk1.8提供新的时间处理,是线程安全的: public static Date parseSync8(String dateStr, String pattern) { if (StringUtils.isEmpty(pattern)) { pattern = DATE_PATTERN; } java.time.format.DateTimeFormatter formatter = java.time.format.DateTimeFormatter.ofPattern(pattern); java.time.LocalDate date = java.time.LocalDate.parse(dateStr, formatter); ZoneId zoneId = ZoneId.systemDefault(); ZonedDateTime zdt = date.atStartOfDay(zoneId); return Date.from(zdt.toInstant()); } public static String formatSync8(Date date, String pattern) { if (StringUtils.isEmpty(pattern)) { pattern = DATE_PATTERN; } java.time.format.DateTimeFormatter formatter = java.time.format.DateTimeFormatter.ofPattern(pattern); ZoneId zoneId = ZoneId.systemDefault(); LocalDateTime now = date.toInstant().atZone(zoneId).toLocalDateTime(); return now.format(formatter); }
java线程安全类时间处理
最新推荐文章于 2024-10-18 10:18:26 发布
本文介绍了一种在Java中实现线程安全日期处理的方法。对于JDK 1.7及以下版本,通过使用ThreadLocal结合SimpleDateFormat来确保线程安全;而对于JDK 1.8及以上版本,则利用新的时间API实现相同目的。
1713

被折叠的 条评论
为什么被折叠?



