Multithreading

在多线程环境Configuration实例中,应将Template实例和数据模型视为不可变(只读)对象。也就是说,您可以创建并初始化它们(例如,使用set...方法),然后再不对其进行修改(例如,您不调用set...)。这使我们能够避免在多线程环境中使用昂贵的同步块。当心Template个实例;当您获得具有Configuration.getTemplateTemplate实例时,您可能会从其他线程已经使用的模板缓存中获取一个实例,因此不要调用其set...方法(调用process当然可以)。

如果仅从相同单线程访问所有对象,则上述限制不适用。

除非您将执行此操作的方法(或其他对象)放入数据模型中,否则无法使用 FTL 修改数据模型对象或shared variable。我们不鼓励您编写修改数据模型对象或共享变量的方法。尝试改用存储在环境对象中的变量(此对象是为单个Template.process调用创建的,以存储处理的运行时状态),因此不要修改多个线程可能使用的数据。有关更多信息,请阅读:Variables, scopes