前言
在java面世的时候就提供了Date类和Calendar类
但是这两个类都存在并发下线程不安全的情况
jdk8中引入了time包
本次期望能学会jdk8下面java.time包下面的常用方法
案例
已知小李为1995年12月23日出生,请问他距离今天已经过去了多少天?
老版本计算比较困难,而且容易在毫秒值出现误差
案例 2
学到了Date和Calendar两个类,一定会学到SimpleDateFormat来进行转换
SimpleDateFormat会有一个clear的操作
所以多线程的时候,当一个线程刚进行clear,这个时候Cpu的时间片被抢夺了,另一个线程开始进行构造的时候发现Calendar这个变量已经为空了,所以多线程就会出现异常
只能用synchronized来修饰保证同步代码块
小结
旧的Date与Calendar还有SimpleDateFormat
存在使用复杂切多线程情况下线程不安全的问题
Time学习
可以看到Time的Api中均不可以使用new关键字去创建对象
而是用now方法去创建每个函数的对象
Of方法
LocalTime LocalDate LocalDateTime
获取时区
Month枚举
Time包引入了Month的枚举
直接拿来用即可
标准十二个月的常量
创建时间
根据现有实例创建日期与时间对象
plus 加 minus 减法
with的用法
调节器
Date与Time之间的转换
SimpleDateFormat的替代品
SimpleDateFormat是线程不安全的