并发编程场景题目

发布时间 2023-11-25 16:48:43作者: guoyu1

(1)发红包,100块钱,10个红包,要求第一个抢到红包的用户,得到的金额最多?

解答:可以先将每个红包的金额计算出来,然后放到一个并发队列中 concurrentLinkedQueue,每个用户就是一个线程,每个线程去操作并发集合,集合为空的线程就返回红包派送完了。

(2)搜索引擎:公司有三种搜索引擎,每个搜索引擎的搜索速度不一样且随机,写一个程序,返回最快的那个搜索引擎的结果?

解答:主线程开启三个异步线程调用搜索引擎的结果,异步线程有结果了,然后主线程去从阻塞队列blockArrayList中获取结果,没有结果就阻塞住。三个异步线程有结果了就将结果写到阻塞队列中,阻塞队列有值了,主线程就返回了最快的那个结果,继续往下走了。