采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,想问下同步移交阻塞队列在生产上一般是什么情况下使用的?感觉和同步执行没什么区别呢
同步移交队列是一个没有存储空间的阻塞队列,目的是避免任务排队。newCachedThreadPool就是使用的同步队列,所以可以做到一个任务提交后,立马会有一个线程来响应。如果线程池没有可用线程了,就会触发拒绝策略。在提交的任务需要被立即处理的场景下会用到。
关于同步执行和使用线程池执行的区别,我抽象场景,举个例子:
同步执行:可以考虑这样一种情况,双十一0点大促,同时有1000W人在付款,而付款这个方法比较耗时。如果同步执行,那相当于需要1000W个付款方法同时在执行。系统是承载不了的。
如果换成线程池处理,1000W人提交了1000W个付款任务,线程池最大线程数为100。那最先提交的100个任务立刻就会被处理,剩下的许多任务都会触发线程池的拒绝策略(因为是同步移交阻塞队列),可能会等待1秒再次请求。这样就保证系统最大承载100个付款任务。
如果有什么不明白的,可以QQ上私聊。
非常感谢!
登录后可查看更多问答,登录/注册
可以改变的编程效率
1.7k 8
959 7
870 7
1.2k 6
950 6