Java 在与main不同的其他线程中启动swing gui,以便在执行计算时更新jtextarea

Java 在与main不同的其他线程中启动swing gui,以便在执行计算时更新jtextarea,java,multithreading,swing,Java,Multithreading,Swing,我的节目现在开始 public static void main(String[] args){ new Gui().setVisible(true); new Program(); } 我正在使用Jtextarea显示结果。 我有Gui显示(字符串)中的方法。它将文本附加到Jtextarea。 我从程序调用display(字符串)来显示结果。我在程序中有一些方法来做一些工作,并调用该方法以在执行结束时显示程序方法。但如果我在执行开

我的节目现在开始

          public static void main(String[] args){
          new Gui().setVisible(true);
         new Program();   }
我正在使用Jtextarea显示结果。 我有Gui显示(字符串)中的方法。它将文本附加到Jtextarea。 我从程序调用display(字符串)来显示结果。我在程序中有一些方法来做一些工作,并调用该方法以在执行结束时显示程序方法。但如果我在执行开始时调用display(String),它将不会显示在Jtextarea中,直到程序的方法完成。它不会更新Gui。我想我需要使用invoklater和new runnable来启动用于Gui的EDT,但主要是如何与新程序一起进行。 那么这个问题的解决方案是什么呢? 谢谢你的帮助


顺便说一句,我在谷歌上搜索过,但不知道怎么做。因此,这是最后一个资源

每个人似乎都忽略了一件大事:这是对
JTextArea.append的swing文档的实际引用:

此方法是线程安全的,尽管大多数Swing方法不是。请看如何使用 获取更多信息

因此,
SwingUtilities.invokelater
似乎与此无关。我真的不知道是什么引起了你的问题。如果你发布一些代码,我可能会提供更多帮助


附言:我本想将此作为评论,但我没有这样做的声誉。

发布您的其余代码(最好是a)请看一看,或者根据您的方法,您可以看一看这个示例,它不是对这个
append()
方法的调用,它实际上是在
程序
类中完成的工作,这是一个值得关注的问题,它可能会阻塞
事件调度程序线程
,这就是为什么推送使用
SwingWorker
在后台运行该任务的原因。尽管提供的信息为+1:-)