DefaultAsyncDispatcherOrNull

使用在非协程环境下的异步API(例如 runInAsync )中的默认调度器。 会在首次被获取的时候进行实例化。

默认情况下,DefaultAsyncDispatcherOrNull 等于 null.

存在部分可配置内容:

属性JVM参数默认值
核心线程数simbot.runInAsync.dispatcher.coreSizeavailableProcessors / 2
最大线程数simbot.runInAsync.dispatcher.maxSizeavailableProcessors * 4
维持时间(毫秒)simbot.runInAsync.dispatcher.keepAliveTime60000

除了提供调度器的使用,你也可以指定一个从 Dispatchers 中存在的属性。使用如下JVM参数可以覆盖调度器的使用: (参数值不区分大小写)

JVM参数对应值描述
simbot.runInAsync.dispatcher=ioDispatchers.IO使用 Dispatchers.IO 作为默认调度器.
simbot.runInAsync.dispatcher=defaultDispatchers.Default使用 Dispatchers.Default 作为默认调度器.
simbot.runInAsync.dispatcher=mainDispatchers.Main使用 Dispatchers.Main 作为默认调度器.
simbot.runInAsync.dispatcher=unconfinedDispatchers.Unconfined使用 Dispatchers.Unconfined 作为默认调度器.
simbot.runInAsync.dispatcher=forkJoinPoolForkJoinPool使用 ForkJoinPool 作为默认调度器.
simbot.runInAsync.dispatcher=virtualVirtualThreadDispatcher使用 VirtualThreadDispatcher 作为默认调度器.
simbot.runInAsync.dispatcher=virtualOrIoVirtualThreadDispatcher or Dispatchers.IO if virtual thread not supported.使用 VirtualThreadDispatcher 作为默认调度器,并在虚拟线程不支持的情况下退化为 Dispatchers.IO
simbot.runInAsync.dispatcher=forkJoinPoolForkJoinPool使用 ForkJoinPool 作为默认调度器.
simbot.runInAsync.dispatcher=customCustomBlockingDispatcherProvider(since 3.3.0) 通过 SPI 加载 CustomBlockingDispatcherProvider 并通过其构建 CoroutineDispatcher