DefaultBlockingDispatcherOrNull
使用在阻塞API(例如 runInBlocking )或非Java协程环境中的默认调度器。 会在首次被获取的时候进行实例化。
默认情况下,DefaultBlockingDispatcherOrNull 为 null,即不使用特别的调度器。
存在部分可配置内容:
| 属性 | JVM参数 | 默认值 |
|---|---|---|
| 核心线程数 | simbot.runInBlocking.dispatcher.coreSize | availableProcessors / 2 |
| 最大线程数 | simbot.runInBlocking.dispatcher.maxSize | availableProcessors * 4 |
| 维持时间(毫秒) | simbot.runInBlocking.dispatcher.keepAliveTime | 60000 |
除了提供调度器的使用,你也可以指定一个从 Dispatchers 中存在的属性。使用如下JVM参数可以覆盖调度器的使用: (参数值不区分大小写)
| JVM参数 | 对应值 | 描述 |
|---|---|---|
simbot.runInBlocking.dispatcher=io | Dispatchers.IO | 使用 Dispatchers.IO 作为默认调度器. |
simbot.runInBlocking.dispatcher=default | Dispatchers.Default | 使用 Dispatchers.Default 作为默认调度器. |
simbot.runInBlocking.dispatcher=main | Dispatchers.Main | 使用 Dispatchers.Main 作为默认调度器. |
simbot.runInBlocking.dispatcher=unconfined | Dispatchers.Unconfined | 使用 Dispatchers.Unconfined 作为默认调度器. |
simbot.runInBlocking.dispatcher=forkJoinPool | ForkJoinPool | 使用 ForkJoinPool 作为默认调度器. |
如果选择了使用某个具体的调度器,那么你可以额外指定属性 simbot.runInBlocking.dispatcher.limitedParallelism 来通过 CoroutineDispatcher.limitedParallelism 来限制使用的最大并发数。更多说明(和警告)参考 CoroutineDispatcher.limitedParallelism。