【问题标题】:Kotlin Regex thread-safetyKotlin 正则表达式线程安全
【发布时间】:2019-11-16 05:43:03
【问题描述】:

在 Java 中,Pattern 类是 thread-safe 好吧。 但是 Kotlin Regex(创建类似于 "[ABC]+".toRegex())在 JVM 和其他运行时是线程安全的吗?

【问题讨论】:

    标签: regex kotlin thread-safety


    【解决方案1】:

    Regex 的文档将您指向 JVM 的 java.util.regex.Pattern。所以它会继承Pattern的并发行为。

    (请注意,仅检查当前实现是不够的;JetBrains 可以并且确实会更改其实现。但如果在文档中指定,则它是公共 API 的一部分,应该相当可靠。)

    JavaScript 的相应文档指向here,它没有提及任何关于线程安全的内容。而对于 Native 来说甚至没有链接。因此,对它们进行任何假设可能是不安全的。

    【讨论】:

    • 可以安全地假设 JavaScript 中的同步函数调用是线程安全的。
    【解决方案2】:

    在 Kotlin 中,toRegex 只是一个创建 Regex 对象的扩展函数。在只调用Pattern.compile(pattern) 的 Kotlin/JVM 上,因此底层代码来自 JDK,并且是线程安全的。

    【讨论】:

      猜你喜欢
      • 2010-11-24
      • 2017-11-27
      • 2011-12-18
      • 2022-01-17
      • 2013-07-31
      • 1970-01-01
      • 2011-06-14
      相关资源
      最近更新 更多