首页 > 解决方案 > 使用多线程时无法初始化 global.run

问题描述

我正在使用 scala 2.12.2 并正在导入一个包 scala.tools.nsc.Global。当使用单个线程或多个按顺序工作的线程时,我有以下代码可以正常工作。但是,当我有多个线程并尝试同时执行这段代码时,我得到一个空异常。你能帮我解决这个问题吗?

  val compiler = new global.Run
  ClassloaderCache.setCompiledFile(compiler.compileSources(sourceFiles))

在深入调试时,我了解代码中断 Definitions.scala 并在下面的方法中执行 ObjectClass.initialize 行。

 // documented in JavaUniverse.init
    def init() {
      if (isInitialized) return
      ObjectClass.initialize
      ScalaPackageClass.initialize
      symbolsNotPresentInBytecode
      NoSymbol
      isInitialized = true
    } //init

标签: multithreadingscalaconcurrency

解决方案


推荐阅读