gpt4 book ai didi

java - 在 servlet 的 doGet() 中安全地使用静态编译模式 - matcher.replaceAll()

转载 作者:行者123 更新时间:2023-11-28 22:34:13 25 4
gpt4 key购买 nike

是否节省:

    private static final String LUCENE_ESCAPE_CHARS = "[\\\\+\\-\\!\\(\\)\\:\\^\\]\\{\\}\\~\\*\\?]";
private static final Pattern LUCENE_PATTERN = Pattern.compile(LUCENE_ESCAPE_CHARS);
private static final String REPLACEMENT_STRING = "\\\\$0";

并在多线程环境中使用下面的代码,例如 servlet 的 doGet()

String escaped = LUCENE_PATTERN.matcher(query).replaceAll(REPLACEMENT_STRING);

我现在主要担心的是增加额外的延迟(例如由于锁定)或出现错误的情况。

最佳答案

它是安全的。Pattern 对象是线程安全的Matcher 对象不是。您可以与多个线程共享模式实例。

但不要在线程之间共享 Matcher 实例。

Pattern 引用 JavaDoc

Instances of this class are immutable and are safe for use by multiple concurrent threads. Instances of the Matcher class are not safe for such use.

关于java - 在 servlet 的 doGet() 中安全地使用静态编译模式 - matcher.replaceAll(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18954532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com