经测试,DateTimeFormatter确实是线程安全的,可以定义为 static 共享使用 import org.junit.Test; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class LocalDateTimeFormatterTest { public static DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); @Test public void testUnsafeSimpleDateFormat() { ExecutorService threadPool = Executors.newFixedThreadPool(10); while (true) { threadPool.execute(() -> { System.out.println("日期范围: "+getDaysBetween("2022-01-22 12:12:12.555")); }); } } public List<String> getDaysBetween(String start) { List<String> dates = new ArrayList<>(); LocalDateTime date = LocalDateTime.parse(start, dtf); while (date.isBefore(LocalDateTime.now())) { dates.add(dtf.format(date)); date = date.plusMonths(1); } return dates; } }
参考文章:
SimpleDateFormat与DateTimeFormatter的线程安全性_commonBean的博客-CSDN博客_datetimeformatter线程安全