前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开发实践,java 如何线程安全的循环匹配正则表达式

开发实践,java 如何线程安全的循环匹配正则表达式

作者头像
用户1289394
发布2023-08-22 15:36:13
1870
发布2023-08-22 15:36:13
举报
文章被收录于专栏:Java学习网Java学习网

在 Java 中,可以使用 Matcher 类的 reset() 方法进行重置以重用 Matcher 对象来执行与给定的输入字符串匹配的操作。下面是一个线程安全的示例:

代码语言:javascript
复制


import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class ThreadSafeRegexMatcher {

private final Pattern pattern;

public ThreadSafeRegexMatcher(String regex) {

pattern = Pattern.compile(regex);

}

public synchronized boolean matches(String input) {

Matcher matcher = pattern.matcher(input);

return matcher.matches();

}

public synchronized String[] group(String input) {

Matcher matcher = pattern.matcher(input);

if (matcher.matches()) {

int groupCount = matcher.groupCount();

String[] groups = new String[groupCount];

for (int i = 0; i < groupCount; i++) {

groups[i] = matcher.group(i + 1);

}

return groups;

}

return null;

}

}

这里使用 synchronized 关键字来确保在同一时间内只有一个线程执行匹配操作,并且重用 Matcher 对象以提高性能。注意,这里采用的是“饿汉式”单例模式,也可以根据需要使用其他线程安全的单例模式。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档