【问题标题】:Are ANTLR parsers for Java thread safe?用于 Java 线程的 ANTLR 解析器是否安全?
【发布时间】:2013-10-11 19:28:42
【问题描述】:

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

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

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

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

做出错误的假设。

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

【问题讨论】:

    标签: thread-safety antlr


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多