关于java并发的面试题

10个人同时从10万条数据中取一条数据,要求取到的数据不相同

蝴蝶不菲
浏览 501回答 7
7回答

胡子哥哥

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

开满天机

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

慕姐4208626

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

慕妹3146593

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

波斯汪

BlockingQueue.take()

慕容708150

题主的意思应该是,10个人,随机读取10W条数据,但是必须保证每个人读取的数据是不一样的。比如说A去读取第99条数据这个时候B也读到了第99条数据,这个时候B就必须重新选择一条数据去读取。我觉得可以在读数据之前先确定读取的是哪条数据,并且把相应的数据行放入一个concurrentHashMap中,下一次读取的时候先判断读取的数据行在Map中是否存在就好了。

函数式编程

使用BlockingQueue
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java