ритм-движок в параллельной обработке

Согласно javadoc, класс RythmEngine не является потокобезопасным, т.е. каждый раз, когда мне приходится создавать новый класс, который выглядит как накладные расходы. Как лучше всего использовать ритмический движок в многопоточной среде.

Ниже приведен пример кода для иллюстрации.

import java.io.File;
import java.util.Map;
import org.rythmengine.RythmEngine;

public class RythmEngineUtil {
    static RythmEngine engine;
    static {
        Map<String, Object> conf;// = configure the object
        engine = new RythmEngine(conf);
    }

    public static String render(File file, Map<String,Object> param){
        return engine.render(file, param);
    }
}

person Jags    schedule 22.08.2017    source источник


Ответы (1)


Если вы создаете и запускаете движок при начальной загрузке приложения, этот экземпляр следует безопасно использовать в многопоточной среде.

person Gelin Luo    schedule 23.08.2017
comment
Итак, один и тот же экземпляр может быть вызван из нескольких потоков одновременно? Все ли запросы синхронизируются в движке или они выполняются параллельно без каких-либо проблем? Извините, что задаю этот вопрос, так как я путаюсь с javadoc, в котором говорится, что этот класс не является потокобезопасным. - person Jags; 24.08.2017
comment
Движку требуется время для компиляции шаблонов и встраивания их в байт-код, во время этого процесса он не является потокобезопасным. Но как только он загружен, сам шаблон (буквально класс Java) не имеет состояния и может использоваться в многопоточной среде. - person Gelin Luo; 25.08.2017