我需要使用 ThreadPoolTask​​Support 吗?

Do I need to use ThreadPoolTaskSupport?

我在 Scala 2.11 中遇到了一种情况,我需要一个并行集合来使用特定的线程机制。 Scala 代码依赖于一个用 Java 编写的平台,它从 ThreadPoolExecutor 创建一个 ThreadPoolExecutor to manage threads; the Scala code needs to hook into the same pool it creates. From this doc, I'll need to set up a TaskSupport in the parallel collection. I can do this by constructing a ThreadPoolTaskSupport。但是,ThreadPoolTaskSupport 被标记为已弃用(请注意 ThreadPoolExecutor 而不是 在 Java 中被标记为已弃用)。

在这种情况下,我只需要使用已弃用的 Scala class,还是有其他解决方法?

您可以用 ThreadPoolExecutor 来创建 scala.concurrent.ExecutionContext,因为 ThreadPoolExecutorjava.util.concurrent.ExecutorService 并使用 ExecutionContext 来构造 ExecutionContextTaskSupport:

import scala.collection.parallel. { ExecutionContextTaskSupport, TaskSupport }
import scala.concurrent.ExecutionContext

import java.util.concurrent.ThreadPoolExecutor

def ectsFromTPE(tpe: ThreadPoolExecutor): TaskSupport =
  new ExecutionContextTaskSupport(
    environment = ExecutionContext.fromExecutorService(tpe)
  )

然后您可以像使用任何其他方法一样使用生成的 TaskSupport

import scala.collection.parallel.immutable.ParRange

val nn = ParRange(0, Int.MaxValue, 1, true)
nn.taskSupport = ectsFromTPE(???)