我正在写一个小应用程序,由gui和几个按钮组成。当用户点击其中的一个时,程序必须下载一个网页,进行一对匹配并向gui返回一个值。 问题是,每当用户点击该按钮时,我必须启动一个新线程,或者有一种线程替代这些小任务(主要是从网上下载内容)?替代线程的小任务不冻结的GUI
1
A
回答
3
你总是需要使用不同的线程。现在你如何使用这些不同的线程取决于你。查看producer/consumer
方法,其中只有一个空闲线程坐在后台等待工作排队。这似乎很适合你的工作。在可能的情况下,您还应该使用SwingWorker
,因为它有助于进行大量GUI更新和刷新。最后,看看java.concurrency
包,因为它非常有用。现在,我认为没有任何理由要手动启动一个线程,而不使用某些为您执行所有锁定和线程的库。
0
如果您希望该调用是异步的,那就别无选择。
但是,如果您可以让您的用户等待下载完成并处理完毕,则不需要线程。
相关问题
- 1. 任务冻结GUI
- 2. 无冻结替代的Thread.Sleep的任务
- 3. 线程完全冻结GUI
- 4. 简单的任务没有冻结gui
- 5. 多线程及的Thread.Sleep冻结GUI
- 6. 任务<T>冻结UI线程
- 7. 如何阻止matplotlib GUI线程冻结?
- 8. 用定时器代替While()循环以防止GUI冻结[多线程?]
- 9. QProcess GUI不冻结
- 10. Python GUI保持冻结,等待线程代码完成运行
- 11. 如何检测主线程在GUI中冻结GUI?
- 12. Powershell:冻结GUI
- 13. Tkinter GUI冻结
- 14. QProcess冻结GUI
- 15. scypy.signal.decimate()冻结GUI
- 16. FireDac冻结GUI
- 17. urllib2冻结GUI
- 18. 使用scintilla NET停止在backgroundworker线程中不冻结GUI
- 19. Xcode中的冻结和解冻线程
- 20. WPF应用程序的GUI冻结
- 21. 处理程序冻结GUI的Android
- 22. Java没有冻结的长时间计算GUI(单线程)
- 23. UI线程冻结
- 24. JavaFX线程冻结
- 25. Delphi线程冻结
- 26. 的Java Swing GUI冻结
- 27. Backgroundworker冻结我的GUI
- 28. JFrame的GUI冻结+幻影
- 29. 冻结并恢复Cocoa任务或线程?
- 30. JavaFX UI在执行新线程任务时冻结
您是否需要为每个按钮按下一个单独的线程,或者您可以只使用一个线程与队列来管理所有这些事件? – 2011-01-25 18:25:05