Clojure中的处理器数量?Java互操作

nuv*_*vio 5 java performance interop clojure

我想使用Java方法:R untime.getRuntime().availableProcessors()并将结果保存在整数变量中.

所以在Clojure中我这样做了:

(def n-cpu  ((.availableProcessors (Runtime/getRuntime)) ))
Run Code Online (Sandbox Code Playgroud)

还有这个:

(def n-cpu (Integer/parseInt ((.availableProcessors (Runtime/getRuntime)) )))
Run Code Online (Sandbox Code Playgroud)

但没有工作.

有什么建议?

Jer*_*emy 16

如果使用整数替换版本中的方法调用,则这是您在逻辑上具有的:

(def n-cpu (4))
Run Code Online (Sandbox Code Playgroud)

Clojure无法处理列表,(4)因为非引用列表中的第一项必须是函数.在这种情况下,第一项是整数,Clojure不将整数视为函数.如果删除不必要的括号,则var定义将如下所示:

(def n-cpu (.availableProcessors (Runtime/getRuntime)))
Run Code Online (Sandbox Code Playgroud)

注意如果用整数替换方法调用,它会变成(def n-cpu 4)什么?