我应该如何在java多线程代码中使用JPMML评估器的modelEvaluator?

时间:2016-10-13 14:42:33

标签: java multithreading pmml

我正在使用JPMML Evaluator库,PMML实例对于所有评估者都是通用的,它会阻止评估者并创建锁定。以多线程方式处理。

//single threaded

PMML pmml = <new pmml>

//multithreaded
ModelEvaluator<MiningModel> someModelEvaluatorThread = new MiningModelEvaluator(genderPmml);

它会起作用还是达到性能。我没有创建特定于pmml线程,因为我不想一次又一次地解析同一个文件。

1 个答案:

答案 0 :(得分:1)

JPMML-Evaluator库的README.md文件说:

  

模型评估程序类遵循函数式编程原则,完全是线程安全的。

如果您在所有线程之间共享相同的模型评估程序实例,或者为每个线程创建单独的模型评估程序实例,则无关紧要 - 它们将非常好地相处。可变状态封装在org.jpmml.evaluator.EvaluationContext对象实例中,该实例对每个评估请求都是“私有的”。

此外,JPMML-Evaluator库不包含任何synchronized代码块,并且不使用任何锁定机制。当您启动更多线程时,应用程序的吞吐量应该线性增加。