今天面试的一道多线程题,求解

AstroSy 2008-03-18 01:27:39
有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的达人们能有什么好的解法。
...全文
219 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
老紫竹 2008-03-18
  • 打赏
  • 举报
回复
已经完善了,可以同时处理GOOD和BAD数据。 呵呵!
老紫竹 2008-03-18
  • 打赏
  • 举报
回复
我只实现了GOOD的算法,对于BAD,还需完善。

不过,一个循环用不了多长时间的。

请参考
http://www.java2000.net/viewthread.jsp?tid=1983
fulianglove 2008-03-18
  • 打赏
  • 举报
回复
mark
AstroSy 2008-03-18
  • 打赏
  • 举报
回复
发表于:2008-03-18 13:50:365楼 得分:0
input 做成消费源1
rule 做成消费源2

消费源维护X*Y的循环,,也就是2个指针而已,保证不要重复判断

线程做成消费者模式,每个线程从消费源里面读取2个数据,一个Input,一个Rule

判断结果分别放入2个本地线程数组,无须考虑同步问题,因为自己用

判断完,从消费源读取下一对数据,直到没有数据了

然后把本地的2个数组插入到2个结果数组Good 和 Bad, 用Vector 即可,因为操作次数不多,等于线程数,对性能影响不大。

至于启动多少个线程,得根据数据量确定了!

------------------------------------------------------------------------------

java2000_net能否用代码写出来让我参考下呢?
老紫竹 2008-03-18
  • 打赏
  • 举报
回复
input 做成消费源1
rule 做成消费源2

消费源维护X*Y的循环,,也就是2个指针而已,保证不要重复判断

线程做成消费者模式,每个线程从消费源里面读取2个数据,一个Input,一个Rule

判断结果分别放入2个本地线程数组,无须考虑同步问题,因为自己用

判断完,从消费源读取下一对数据,直到没有数据了

然后把本地的2个数组插入到2个结果数组Good 和 Bad, 用Vector 即可,因为操作次数不多,等于线程数,对性能影响不大。

至于启动多少个线程,得根据数据量确定了!



Squall1009 2008-03-18
  • 打赏
  • 举报
回复
good和bad是线程安全的容器吗?如果是的,那多线程就是等待
如果不是。。。。
super_ssy 2008-03-18
  • 打赏
  • 举报
回复
一,先统计INPUT数组的长度,然后起相应多个线程
二,每个线程做的事就是将和自己下标号对应的那个INPUT里的元素和RULE里的每一个元素的做前缀比较,如果比较成功就存入GOOD里,全部都比较完了也没成功,就放BAD里
zapdos 2008-03-18
  • 打赏
  • 举报
回复
我觉得还是用hash+二分查找来做会快
Squall1009 2008-03-18
  • 打赏
  • 举报
回复
rule和input里面的东西是第i个和第i个比的话。。。
好像单线程快点

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧