Java 线程输出侦听器

Java 线程输出侦听器,java,multithreading,swing,event-dispatch-thread,Java,Multithreading,Swing,Event Dispatch Thread,我需要创建一个从swing按钮开始的线程,并等待来自rs232的输入,处理它并将String返回到我的变量。问题是如何做到这一点 应该是这样的: String myOutputString = waitForInputThread(); 或者,如果可能的话,在swing面板中做一些类似listener的事情,如果这个waitForInputThreadsend中断(例如,如果获取rs232输入,则更新JTable中的项目列表) 您能给我一些线索、教程、示例等吗?为了避免阻塞事件调度线程(即

我需要创建一个从swing按钮开始的线程,并等待来自rs232的输入,处理它并将
String
返回到我的变量。问题是如何做到这一点

应该是这样的:

  String myOutputString = waitForInputThread();
或者,如果可能的话,在swing面板中做一些类似listener的事情,如果这个
waitForInputThread
send中断(例如,如果获取rs232输入,则更新
JTable
中的项目列表)


您能给我一些线索、教程、示例等吗?

为了避免阻塞事件调度线程(即更新GUI的线程),请启动一个新线程与RS232交互。类是一个选项,但您可以同样轻松地使用普通线程。1阻止EDT会导致GUI冻结,因此决不能将其用于冗长的任务

计算结果后,使用更新GUI。这确保了在EDT上发生GUI更改


1我倾向于发现通过执行的普通线程更适合于单元测试(因为您可以编写一个
ExecutorService
,它可以立即执行
Runnable
,避免JUnit出现任何令人讨厌的线程问题)。

不要阻止EDT(事件调度线程)-发生这种情况时,GUI将“冻结”。而是为长时间运行的任务实施
SwingWorker
。有关更多详细信息,请参阅。@Zoyd的重命名不比重新标记更容易吗?您所说的重命名是什么意思?重命名什么?好的,我有一个线程一直在读rs232,但是如何将侦听器写入线程事件呢?我想要这样:线程一直在工作,当他读取rs232时,他像事件一样传递它。gui中的侦听器读取此事件并执行某些操作。