多线程过滤敏感词
原文:https://git.oschina.net/tianzhenjiu/codes/y9z6t471s3euinoj5vcdf79
package io.test; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class Testoss { public static void main(String[] args) throws Exception { String[] keywords={"毛","周","二逼","xx","王五","刘能","你好吗","***","哈哈","中国人"}; String content="你好哈222哈2哈啊大a我们是中国人在主实例的读请求较多、读压力比较大的时候,可以通过 DRDS 读写分离功能对读流量进行分流,减轻 RDS 主实例的读压力。你好哈222哈2哈啊大a我们是中国人在主实例的读请求较多、读压力比较大的时候,可以通过 DRDS 读写分离功能对读流量进行分流,减轻 RDS 主实例的读压力。你好哈222哈2哈啊大a我们是中国人在主实例的读请求较多、读压力比较大的时候,可以通过 DRDS 读写分离功能对读流量进行分流,减轻 RDS 主实例的读压力。你好哈222哈2哈啊大a我们是中国人在主实例的读请求较多、读压力比较大的时候,可以通过 DRDS 读写分离功能对读流量进行分流,减轻 RDS 主实例的读压力。你好哈222哈2哈啊大a我们是中国人在主实例的读请求较多、读压力比较大的时候,可以通过 DRDS 读写分离功能对读流量进行分流,减轻 RDS 主实例的读压力。你好哈222哈2哈啊大a我们是中国人在主实例的读请求较多、读压力比较大的时候,可以通过 DRDS 读写分离功能对读流量进行分流,减轻 RDS 主实例的读压力。"; int splitthread=2; int count=keywords.length/splitthread; ExecutorService executorService=Executors.newFixedThreadPool(4); boolean filterit=false; List<Future<String>> futures=new ArrayList<>(); for(int i=0;i<keywords.length;i+=count){ final List<String> strings=new ArrayList<>(); for(int j=0;i+j<keywords.length&& j<count;j++){ strings.add(keywords[i+j]); } futures.add(executorService.submit(new Callable<String>() { @Override public String call() throws Exception { return filter(content, strings); } })); } for(Future<String> future:futures){ if(future.get()!=null){ filterit=true; System.out.println(future.get()); } } executorService.shutdown(); System.out.println(filterit); } /** * * @param content 内容 * @param keywords 过滤词组 * @return */ public static String filter(String content,List<String> keywords){ // // try { // Thread.sleep(1000); // } catch (InterruptedException e) { // e.printStackTrace(); // } // for(String keyword:keywords){ if(content.indexOf(keyword)>0) return keyword; } return null; } }
看完打开支付宝扫一扫领个红包吧!