All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.biz.common.date.BizDateFormat Maven / Gradle / Ivy

Go to download

BizX 是一个灵活而高效的业务开发框架, 其中也有很多为业务开发所需要的工具类的提供。

The newest version!
package com.biz.common.date;

import java.text.DateFormat;
import java.text.SimpleDateFormat;

/**
 * 时间转换工具类,提供线程安全的日期格式化。
 * 

该类使用 {@link ThreadLocal} 来确保每个线程有一个独立的 {@link DateFormat} 实例,从而解决 {@link SimpleDateFormat} 在多线程环境中的非线程安全问题。

* *

示例代码:

*
{@code
 *     DateFormat dateFormat = BizDateFormat.getDateFormat("yyyy-MM-dd");
 *     String formattedDate = dateFormat.format(new Date());
 * }
* *

注意:此方法假定调用者将使用相同的格式字符串来获取 {@link DateFormat} 实例。如果需要支持多种格式,应相应调整实现。

* * @author francis * @version 1.0.1 * @since 1.0.1 * @see java.text.DateFormat * @see java.text.SimpleDateFormat * @see java.lang.ThreadLocal */ public final class BizDateFormat { /** * 使用 {@link ThreadLocal} 来确保每个线程有一个独立的 {@link DateFormat} 实例。 */ private static final ThreadLocal DATE_FORMAT_THREAD_LOCAL = new ThreadLocal() { @Override protected DateFormat initialValue() { // 为每个线程初始化时创建 SimpleDateFormat 实例 return new SimpleDateFormat(); } }; /** * 获取线程安全的 {@link DateFormat} 实例。 *

注意:此方法假定调用者将使用相同的格式字符串来获取 {@link DateFormat} 实例。如果需要支持多种格式,应相应调整实现。

* * @return 线程安全的 {@link DateFormat} 实例 */ public static DateFormat getDateFormat() { return DATE_FORMAT_THREAD_LOCAL.get(); } /** * 为特定格式字符串初始化并获取线程安全的 {@link DateFormat} 实例。 *

此方法解决了多线程环境下 {@link SimpleDateFormat} 的非线程安全问题,通过 {@link ThreadLocal} 隔离每个线程的 {@link DateFormat} 实例。

* * @param format 日期格式字符串,如 "yyyy-MM-dd HH:mm:ss" * @return 线程安全的 {@link DateFormat} 实例,针对特定格式字符串 */ public static DateFormat getDateFormat(String format) { // 使用 ThreadLocal 来确保每个线程和每个格式有一个独立的 DateFormat 实例 ThreadLocal formatThreadLocal = new ThreadLocal() { @Override protected DateFormat initialValue() { return new SimpleDateFormat(format); } }; return formatThreadLocal.get(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy