在 clojure 并发中,如果执行任务需要很长时间,我希望我生成的线程会自行杀死,类似于 Golang ctx withtimeout 提供的。我该怎么做?请注意,我对 java 线程一无所知。
2 回答

偶然的你
TA贡献1841条经验 获得超3个赞
您无法彻底杀死 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 线程的替代品。
- 2 回答
- 0 关注
- 178 浏览
添加回答
举报
0/150
提交
取消