针对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