在 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 關注
- 173 瀏覽
添加回答
舉報
0/150
提交
取消