请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

同步移交阻塞队列的使用场景是什么?

老师,想问下同步移交阻塞队列在生产上一般是什么情况下使用的?感觉和同步执行没什么区别呢

正在回答

1回答

同步移交队列是一个没有存储空间的阻塞队列,目的是避免任务排队。newCachedThreadPool就是使用的同步队列,所以可以做到一个任务提交后,立马会有一个线程来响应。如果线程池没有可用线程了,就会触发拒绝策略。在提交的任务需要被立即处理的场景下会用到。

关于同步执行和使用线程池执行的区别,我抽象场景,举个例子:

同步执行:可以考虑这样一种情况,双十一0点大促,同时有1000W人在付款,而付款这个方法比较耗时。如果同步执行,那相当于需要1000W个付款方法同时在执行。系统是承载不了的。

如果换成线程池处理,1000W人提交了1000W个付款任务,线程池最大线程数为100。那最先提交的100个任务立刻就会被处理,剩下的许多任务都会触发线程池的拒绝策略(因为是同步移交阻塞队列),可能会等待1秒再次请求。这样就保证系统最大承载100个付款任务。

如果有什么不明白的,可以QQ上私聊。

3 回复 有任何疑惑可以回复我~
  • 提问者 慕虎2571182 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-11-13 23:57:16
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信