Engine forEmail = Engine.create("forEmail"); Template template = Engine.use("forEmail").getTemplate("email-template.txt");
即是forEmail用单例,还是template单例。template对象是线程安全的吗?
template.renderToString(...);
上面代码并发时线程安全的吗?
确保线程安全的主要措施就是:将不是线程安全的参数通过 render 方法参数传递进去,例如:
Template.render(Map data, Writer writer);
上面的 data、writer 参数线程不安全,所以让其通过 render 方法传入,确保了非线程安全参数与 Template 对象的分离,从而确保了 Template 可以采用线程安全设计并缓存,从而可以极大提升效率