gpt4 book ai didi

java - Schedulers.computation 和 Schedulers.io 的实现有什么区别?

转载 作者:行者123 更新时间:2023-12-03 20:26:18 27 4
gpt4 key购买 nike

为什么它们用于不同类型的任务?在处理计算任务与 io 任务时,它们有何不同?

Schedulers.computation( ) - meant for computational work such as event-loops and callback processing; do not use this scheduler for I/O (use Schedulers.io( ) instead); the number of threads, by default, is equal to the number of processors



Schedulers.io( ) - meant for I/O-bound work such as asynchronous performance of blocking I/O, this scheduler is backed by a thread-pool that will grow as needed; for ordinary computational work, switch to Schedulers.computation( ); Schedulers.io( ) by default is a CachedThreadScheduler, which is something like a new thread scheduler with thread caching

最佳答案

I/O 和计算是非常不同的工作负载。

计算纯粹受 CPU 限制,因此您希望限制线程的数量,以免它们争夺 CPU 并让自己饿死。如果您有 1000 个线程都试图在 8 个内核上工作,那么您可能会度过一段糟糕的时光。 Schedulers.computation() 限制为核心数。

I/O 是不同的,因为虽然它们通常需要一个线程来维护上下文,但它们并不真正使用 CPU——它们只是 hibernate 直到 I/O 完成。在单核机器上进行 1000 次 I/O 操作是非常好的,因为它们大部分时间都处于 hibernate 状态。 Schedulers.io() 没有上限,将根据需要生成尽可能多的线程

关于java - Schedulers.computation 和 Schedulers.io 的实现有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36502037/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com