5

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

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

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

通常,这个问题实际上是在问,“我可以创建同一个解析器的多个实例并同时解析多个输入流吗?”

做出错误的假设。

由于 ANTLR FAQ 中没有提到它,我假设解析器不是线程安全的。

4

1 回答 1

6

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

于 2013-10-12T00:31:25.280 回答