一、日期类改进
1. SimpleDateFormat
package com.dreamer.multithread.day07;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo05 {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for (int i = 0; i < 10; i++) {
new Thread(() -> {
try {
Date parse = sdf.parse("2021-09-17");
System.out.println(parse);
} catch (ParseException e) {
e.printStackTrace();
}
}).start();
}
}
}
package com.dreamer.multithread.day07;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo05 {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for (int i = 0; i < 10; i++) {
new Thread(() -> {
synchronized (sdf) {
try {
Date parse = sdf.parse("2021-09-17");
System.out.println(parse);
} catch (ParseException e) {
e.printStackTrace();
}
}
}).start();
}
}
}
2. SimpleDateFormat
- JDK8之后提供了线程安全的类
- DateTimeFormatter
package com.dreamer.multithread.day07;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAccessor;
public class Demo05 {
public static void main(String[] args) {
DateTimeFormatter dfm = DateTimeFormatter.ofPattern("yyyy-MM-dd");
for (int i = 0; i < 10; i++) {
new Thread(() -> {
TemporalAccessor parse = dfm.parse("2021-09-17");
System.out.println(parse);
}).start();
}
}
}
二、不可变类
- 不可变类是线程安全的
- 类中所有成员变量都是final修饰,保证不可变,保证只能读不能写
- 类是final修饰,不能被重写