猿问

Clojure 中的 Golang Ctx WITHTimeOut

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

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


守候你守候我
浏览 179回答 2
2回答

偶然的你

您无法彻底杀死 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 线程的替代品。

米脂

没关系,显然有一种东西叫做未来和承诺..
随时随地看视频慕课网APP

相关分类

Go
我要回答