是newKieSession线程安全吗?

时间:2014-09-12 11:35:24

标签: java multithreading thread-safety drools kie

我们在项目中使用了Drools kieSessions。许多线程可以创建新的kieSession。有时线程可以在创建会话时挂起。因此问题是:

首先

  1. 是kieContainer.newKieSession线程安全操作吗?
  2. 悬挂的原因可能是脏写或阅读kie会话或类似的东西吗?

2 个答案:

答案 0 :(得分:3)

我在实践中检查了

newKieSession

不是线程安全的操作。

答案 1 :(得分:1)

我无法在drools文档中找到任何明确的声明,但我的理解是KieContainer是线程安全的,甚至足够聪明(有点默默/神奇地)更新自己(或者更确切地说是包含KieBases)。

出于所有实际目的(调试/阅读源代码),我认为所有KieContainer.newStatelessKieSession()KieContainer.newKieSession()方法都是线程安全的。

我不是100%确定updateToVersion()updateDependencyToVersion()方法,以及是否通过KieContainer.newStatelessKieSession()newKieSession()方法并行更改kie容器。< / p>

在我们的应用程序中,我们设法将规则(以及模块,基础,会话及其配置)的修改逻辑与规则评估(使用newKieSession等方法)分开,事情似乎很好所以远,但我想了解你是如何得出它不是线程安全的结论。