首页 > 关于java并发的面试题

关于java并发的面试题

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


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

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


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


BlockingQueue.take()


使用BlockingQueue


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


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


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

【热门文章】
【热门文章】