java8中将非线程安全类采用lamda表达式转换成线程安全类的方式

2/10/2017来源:ASP.NET技巧人气:965

java代码如下 public class NewDateFormatter { public final static ThreadLocal<DateFormatter> formatter = ThreadLocal.withInitial(() -> new DateFormatter(new SimpleDateFormat("dd-MMM-yyyy"))); }

这里面采用了ThreadLocal类里面的withInitial方法,该方法接受一个函数接口, 也就是lamda表达式作为参数, 返回一个新的ThreadLocal对象,相当于强制在新线程中创建新对象的方式实现了线程安全