Java 在swing gui运行的同时运行线程

Java 在swing gui运行的同时运行线程,java,multithreading,swing,swingworker,Java,Multithreading,Swing,Swingworker,我有这门课: public class MyClass extends Observable implements Runnable { ... } 在swing gui运行期间,我必须在后台执行此线程。哪种可能是最好的解决方案? 如果我没有犯错误,我就不能使用SwingWorker。对吗?SwingWorker就是专门为此而设计的。继续使用它,它会起作用的。首先阅读它的文档 如果你想使用你已经拥有的类,你也可以这样做。只要这样做: newthread(newmyclass()).start(

我有这门课:

public class MyClass extends Observable implements Runnable
{
...
}
在swing gui运行期间,我必须在后台执行此线程。哪种可能是最好的解决方案?
如果我没有犯错误,我就不能使用
SwingWorker
。对吗?

SwingWorker
就是专门为此而设计的。继续使用它,它会起作用的。首先阅读它的文档

如果你想使用你已经拥有的类,你也可以这样做。只要这样做:


newthread(newmyclass()).start()

SwingWorker
就是专门为此而设计的。继续使用它,它会起作用的。首先阅读它的文档

如果你想使用你已经拥有的类,你也可以这样做。只要这样做:


newthread(newmyclass()).start()

在Java中引入SwingWorker是为了同步UI线程工作和非UI线程工作,因为在UI线程上执行非UI工作会降低GUI的响应速度… 确保只有GUI代码在事件调度器线程中运行


正如Android中的AsyncTask一样,Java中引入SwingWorker是为了同步UI线程工作和非UI线程工作,因为在UI线程上执行非UI工作会降低GUI的响应速度… 确保只有GUI代码在事件调度器线程中运行


在Android中,我们有AsyncTask(异步任务)用于此目的…

但我不明白如何使用swing…我的类已经有了一个超类,要使用swingworker,我必须extend@Mazzy那么在这种情况下,在我的回答中使用第二种方法。是的,您必须确保不从该线程访问任何GUI内容,所有与Swing相关的内容都必须在EDT上执行。您可以使用
invokeLater
,是的。但是我不明白如何使用swing…我的类已经有了一个超类,要使用swingworker我必须extend@Mazzy那么在这种情况下,在我的回答中使用第二种方法。是的,您必须确保不从该线程访问任何GUI内容,所有与Swing相关的内容都必须在EDT上执行。您可以使用
调用器
,是的。