我需要创建一个从swing按钮开始的线程并等待来自rs232的输入,处理它并将String
返回到我的变量。问题是如何做到这一点?
应该是这样的:
String myOutputString = waitForInputThread();
或者,如果这个waitForInputThread
发送中断(例如,如果获取rs232输入确实更新了JTable
中的项目列表),那么它可以在swing面板中做出类似侦听器的操作。
你能给我一些线索,教程,例子等吗?
答案 0 :(得分:1)
为了避免阻塞Event Dispatch Thread(更新GUI的线程),启动一个新线程与RS232交互。 SwingWorker
类是一个选项,但您可以轻松使用普通线程。 1 阻止EDT会导致GUI冻结,因此绝不能用于冗长的任务。 / p>
计算完结果后,使用SwingUtilities.invokeLater()
更新GUI。这可确保在EDT上进行GUI更改。
1 我倾向于发现通过ExecutorService
执行的正常线程更适合单元测试(因为你可以写一个立即执行ExecutorService
的{{1}} 1}},避免JUnit的任何讨厌的线程问题。