Java8以前,我们一直长期使用Date和Calendar来处理时间,而在使用Date处理日期时间问题上会存在一定的隐患,产生线程不安全的问题,最典型的就是在一定负载并发量的情况下使用SimpleDateFormat引发的线程安全性问题。如今Java8提供了LocalDate、LocalTime、LocalDateTime三个日期时间类,在安全性和操作性上对比Date和Calendar非常可观,下面我们就来了解下他们。
一、使用Date的弊端(三个问题)
弊端一:使用Date输出的日期可读性差(在不进行日期格式化的情况下)
Tue Sep 10 09:34:04 CST 2019
弊端二:用户Date格式转换的SimpleDateFormat不是线程安全的
接第一,Date输出的标准美式时间不适合中国人看,如果要对Date格式转换,需要使用到SimpleDateFormat,但是,SimpleDateFormat是线程不安全的,在高并发高负载的情况下使用,极容易引发线程安全性问题,以下是SimpleDateFormat的format方法源码:
private StringBuffer format(Date date, StringBuffer toAppendTo,
Fi