为了账号安全,请及时绑定邮箱和手机立即绑定

关于java并发的面试题

关于java并发的面试题

蝴蝶不菲 2019-03-14 18:14:33
10个人同时从10万条数据中取一条数据,要求取到的数据不相同
查看完整描述

7 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

把10万个数加上10把区域锁,每个人就限制在该区域拿,就不会重复了,java中有实现的类


查看完整回答
反对 回复 2019-04-15
?
开满天机

TA贡献1786条经验 获得超13个赞

1.有两种方法:
10个人按顺序取。当这个人取得时候,其他人不能取(取完设置一个标志位)。
2.同时取,取完再比较。转成hashSet。size不等于10就说明有重复。然后再取一遍。直到不重复。
推荐第一种、

查看完整回答
反对 回复 2019-04-15
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

可以试试使用java的并发集合,比如concurrentHashMap等。


查看完整回答
反对 回复 2019-04-15
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

如果描述的就是全部的要求的话,第X个人取第X条数据不就好了?


查看完整回答
反对 回复 2019-04-15
?
波斯汪

TA贡献1811条经验 获得超4个赞

BlockingQueue.take()


查看完整回答
反对 回复 2019-04-15
?
慕容708150

TA贡献1831条经验 获得超4个赞

题主的意思应该是,10个人,随机读取10W条数据,但是必须保证每个人读取的数据是不一样的。比如说A去读取第99条数据这个时候B也读到了第99条数据,这个时候B就必须重新选择一条数据去读取。

我觉得可以在读数据之前先确定读取的是哪条数据,并且把相应的数据行放入一个concurrentHashMap中,下一次读取的时候先判断读取的数据行在Map中是否存在就好了。


查看完整回答
反对 回复 2019-04-15
?
函数式编程

TA贡献1807条经验 获得超9个赞

使用BlockingQueue


查看完整回答
反对 回复 2019-04-15
  • 7 回答
  • 0 关注
  • 498 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号