首页 > 解决方案 > Clojure 中的 Golang Ctx WITHTimeOut

问题描述

在 clojure 并发中,如果执行任务需要很长时间,我希望我生成的线程会自行杀死,类似于 Golang ctx withtimeout 提供的。我该怎么做?

请注意,我对 java 线程一无所知。

标签: goclojure

解决方案


您无法彻底杀死 Java 线程,因此人们通常会编写运行时间很长的线程来偶尔检查一个标志,并且只有在适当的时候才继续工作。

另一方面,线程的客户端可以停止等待答案。如果您使用 启动线程future,您可以使用https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/derefderef上的超时参数,或使用 进行检查。future-done?

当你有很多异步的事情发生时,Clojure 的 core.async 库中更好的类似 Go 的代数可能会有所帮助(https://clojure.github.io/core.async/)作为原始 Java 线程的替代品。


推荐阅读