在clojure中,您可以創建SwingWorker代理並實現doInBackground並執行方法。你將如何繼續調用swingworker的執行方法?在clojure中執行SwingWorker
2
A
回答
2
您可以創建和調用使用標準的Java互操作
;; define a proxy that extends SwingWorker
(def my-swing-worker
(proxy [SwingWorker] []
(doInBackground []
(reduce + (range 1000000)))))
;; run the SwingWorker
(.execute my-swing-worker)
;; Get the result
(.get my-swing-worker)
=> 499999500000
一個SwingWorker的,例如:然而,通常用Clojure你不會直接使用SwingWorkers。 Clojure中已經有一項功能提供了一個SwingWorker的功能:一個future使用一個單獨的線程來計算長時間運行的任務,並允許您稍後獲取結果。用法示例:
;; define and launch a future
(def my-future
(future
(reduce + (range 1000000))))
;; get the result (will wait for future to complete if needed)
@my-future
=> 499999500000
我想大多數人都會同意「純Clojure的」方式是在後臺運行的更簡單,更地道。我能想到的首選SwingWorker的唯一原因是,如果您使用了它提供的某些特定的GUI集成功能(例如觸發屬性更改事件的功能)。
+0
感謝您提供「純Clojure」的方式。 – adamjmarkham
相關問題
- 1. 重複執行SwingWorker
- 2. 在for循環中執行SwingWorker
- 3. 「單個LIFO執行器」/ SwingWorker
- 4. 從SwingWorker執行SwingWorker - 等待直到第一次停止
- 5. 擴展(不執行)Clojure中
- 6. clojure執行foreach(doseq)
- 7. SwingWorker問題,doInBackground方法不執行?
- 8. SwingWorker任務執行()的奇怪結果
- 9. 執行SwingWorker doInBackground時的用戶輸入
- 10. 如何執行Clojure文件?
- 11. Jenkins的clojure測試執行
- 12. 未完全執行的Clojure中接口
- 13. Clojure宏:在宏內部執行代碼
- 14. 在執行SwingWorker之前掛起Java文件傳輸程序
- 15. 在執行另一個之前等待SwingWorker完成
- 16. 使用SwingWorker在後臺執行復雜的任務
- 17. 睡在SwingWorker?
- 18. 在SwingWorker中處理錯誤
- 19. 在SwingWorker中更新參數
- 20. 如何使用clojure jdbc執行?
- 21. 如何在Clojure中執行類型轉換?
- 22. 如何在Clojure中最多執行N次函數?
- 23. 在clojure中提取和寫入函數的執行時間
- 24. 如何在單線程中執行一些Clojure期貨?
- 25. 如何在Clojure中編寫/執行類型操作?
- 26. 執行Clojure塊(或選擇)在Atom proto-repl中不起作用
- 27. 在clojure中運行D3.js
- 28. 如何在Clojure中斷行?
- 29. SwingWorker通過差異實例執行多次?
- 30. SwingWorker的執行所完成的()完成doInBackground()之前
你的問題到底是什麼?您是否嘗試過通常的Java-interop語法,如下所示:(.execute worker)? – MisterMetaphor