有1数组名为rule,有1数组名为input,rule里装的规则如(ad,dis,in,lop,infor,mal,...),input装的是源数据如(admin,input,inter,popo,name,class,...),A,B数据量都很大,希望能用多线程实现:将input里的数据按照rule里的前缀过滤,匹配的放在good数组里,不满足的放在bad数组里,具有较高效率。
-----------------------------------------------------
今天面试一公司的题,看看csdn的达人们能有什么好的解法。
-----------------------------------------------------
今天面试一公司的题,看看csdn的达人们能有什么好的解法。
好像单线程快点
二,每个线程做的事就是将和自己下标号对应的那个INPUT里的元素和RULE里的每一个元素的做前缀比较,如果比较成功就存入GOOD里,全部都比较完了也没成功,就放BAD里
如果不是。
rule 做成消费源2消费源维护X*Y的循环,,也就是2个指针而已,保证不要重复判断线程做成消费者模式,每个线程从消费源里面读取2个数据,一个Input,一个Rule判断结果分别放入2个本地线程数组,无须考虑同步问题,因为自己用判断完,从消费源读取下一对数据,直到没有数据了然后把本地的2个数组插入到2个结果数组Good 和 Bad, 用Vector 即可,因为操作次数不多,等于线程数,对性能影响不大。至于启动多少个线程,得根据数据量确定了!
input 做成消费源1
rule 做成消费源2 消费源维护X*Y的循环,,也就是2个指针而已,保证不要重复判断 线程做成消费者模式,每个线程从消费源里面读取2个数据,一个Input,一个Rule 判断结果分别放入2个本地线程数组,无须考虑同步问题,因为自己用 判断完,从消费源读取下一对数据,直到没有数据了 然后把本地的2个数组插入到2个结果数组Good 和 Bad, 用Vector 即可,因为操作次数不多,等于线程数,对性能影响不大。 至于启动多少个线程,得根据数据量确定了! ------------------------------------------------------------------------------java2000_net能否用代码写出来让我参考下呢?
http://www.java2000.net/viewthread.jsp?tid=1983