Java线程的ANTLR解析器是否安全?

时间:2013-10-11 19:28:42

标签: thread-safety antlr

ANTLR(v3.2)生成的Java解析器线程是否安全?

例如,在servlet请求处理程序中,我可以重用相同的解析器实例来解析请求体吗?请求可能出现在不同的线程上,因此必须以线程安全的方式进行解析。如果实例是线程安全的,我可以在每个请求中重用相同的实例;否则我必须汇集它们或创建新实例。 ANTLRv3 FAQ对线程安全没有提及。

有一个古老的(2000)jGuru question关于这一点,以及那里的答案,

  

通常这个问题真的在问,“我可以制作多个   同一个解析器的实例并解析多个输入流   同一时间?“

做出了错误的假设。

由于ANTLR常见问题解答中未提及,我认为解析器线程安全。

1 个答案:

答案 0 :(得分:6)

在ANTLR 3中,没有关于线程安全的保证。在ANTLR 4中,实例方法对于多线程操作是不安全的,但是您可以创建解析器的两个单独实例,并在多个线程上使用这些单独的实例。