针对DateFormat
public static void main(String[] args) throws Exception {
		ExecutorService pool = Executors.newFixedThreadPool(10);
	
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		
		Callable<Date> task = new Callable<Date>() {
			@Override
			public Date call() throws Exception {
				return df.parse("2021-03-08");
			}
			
		};
		
		List<Future<Date>> list = new ArrayList<>();
		
		for(int i = 0; i < 10; i++) {
			Future<Date> submit = pool.submit(task);
			list.add(submit);
		}
		
		for(Future<Date> future : list) {
			System.out.println(future.get());
		}
		
		pool.shutdown();
}使用ThreadLocal加锁
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
/** 
* @ClassName: DateFormatThreadLocal 
* @Description: TODO
* @author Liu 
* @date 2021年3月8日 上午11:36:42 
*/
public class DateFormatThreadLocal {
	public static final ThreadLocal<DateFormat> THREAD_LOCAL = new ThreadLocal<DateFormat>() {
		protected DateFormat initialValue() {
	        return new SimpleDateFormat("yyyy-MM-dd");
	    }
	};
	
	public static Date convert(String str) throws Exception {
		return THREAD_LOCAL.get().parse(str);
	}
}
public static void main(String[] args) throws Exception {
		ExecutorService pool = Executors.newFixedThreadPool(10);
		
		Callable<Date> task = new Callable<Date>() {
			
			@Override
			public Date call() throws Exception {
				return DateFormatThreadLocal.convert("2021-03-08");
			}
			
		};
		
		List<Future<Date>> list = new ArrayList<>();
		
		for(int i = 0; i < 10; i++) {
			Future<Date> submit = pool.submit(task);
			list.add(submit);
		}
		
		for(Future<Date> future : list) {
			System.out.println(future.get());
		}
		
		pool.shutdown();
	}使用java8新的日期api DateTimeFormatter
public static void main(String[] args) throws Exception {
		ExecutorService pool = Executors.newFixedThreadPool(10);
		
		DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
		
		Callable<LocalDate> task = new Callable<LocalDate>() {
			
			@Override
			public LocalDate call() throws Exception {
				return LocalDate.parse("2021-03-08", dtf);
			}
			
		};
		
		List<Future<LocalDate>> list = new ArrayList<>();
		
		for(int i = 0; i < 10; i++) {
			Future<LocalDate> submit = pool.submit(task);
			list.add(submit);
		}
		
		for(Future<LocalDate> future : list) {
			System.out.println(future.get());
		}
		
		pool.shutdown();
	}
原文:https://www.cnblogs.com/coding8832/p/14499013.html