Java Regex线程安全吗?

我有一个函数,该函数使用Pattern#compileMatcher来搜索字符串列表中的模式。

此函数用于多个线程。每个线程将在Pattern#compile创建线程时传递给的唯一模式。线程和模式的数量是动态的,这意味着我可以Pattern在配置期间添加更多s和线程。

synchronize如果使用正则表达式,是否需要在此函数上放一个?Java线程中的正则表达式安全吗?

回答:

,来自Pattern类的Java

API文档

此类(模式)的实例是不可变的,可以安全地由多个并发线程使用。Matcher类的实例不安全用于此类用途。

如果您正在查看以性能为中心的代码,请尝试使用reset()方法重置Matcher实例,而不是创建新实例。这将重置Matcher实例的状态,使其可用于下一个正则表达式操作。实际上,正是Matcher实例中维护的状态才使它对于并发访问不安全。

以上是 Java Regex线程安全吗? 的全部内容, 来源链接: utcz.com/qa/431213.html

回到顶部