在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