欢迎使用!有关如何工作的更多信息,请参阅关于页面。
在此更改之前(https://github.com/clojure/core.async/commit/a690c4f3b7bf9ae9e7bdc899c030955d5933042d),core.async 使用的服务执行器可以通过一个变量访问。虽然该变量不是公共 API 的一部分,但现在作为一个可管理的资源完全不可访问。更重要的是,如果不关闭 JVM 就无法关闭它。这给 JVM 的管理带来了各种操作困难和副作用,特别是与类加载器相关。
至少将执行器提升回变量(之前的方式)会有所帮助。理想情况下,core.async 应该将执行器作为 API 的一部分暴露,适用于常规 ExecutorService 接口,或者至少提供一个关闭函数。