当前位置: 首页 > 知识库问答 >
问题:

Java中的SwingWorker线程

子车芷阳
2023-03-14

我现在正在使用SwingWorker,我遇到了一点问题,我意识到不可能从http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html.多次执行SwingWorker线程

我的问题是,是否可以创建同一SwingWorker线程的新实例?在这里的代码中,我将工作线程称为“worker”

SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>(){
  public void doInBackGround(){

  }
};

是否可以创建此线程的多个实例,以便我可以多次调用它?我试过类似的方法

(new SwingWorker<Void, Void> worker).execute();

但这似乎不起作用。任何帮助都将被告知!

共有1个答案

江奕
2023-03-14

每次需要时创建一个新的SwingWorker有什么问题?

如果需要在实例中存储一些需要多次运行的状态,那么可以使用可运行或可调用接口,并将其交给SwingWorker执行。每次都必须创建SwingWorker,但可运行或可调用实例可以相同。

在下面的示例中,每次都创建辅助角色实例,但可运行实例总是相同的。

class Foo {
  private final Runnable executeInBackground;
  private final Runnable executeInDone;

  public Foo(Runnable done, Runnable background) {
     executeInDone = done;
     executeInBackground = background;
  }

  public void execute() {
     SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() {
        public void doInBackground() {
           executeInBackground.run();
        }

        public void done() {
           executeInDone.run();
        }
     };
     worker.execute();
  }
}
 类似资料:
  • 问题内容: 我对SwingWorker和Java GUI有疑问。 我有几类,其处理的信息,我们可以给他们打电话,和。此处理可能需要很长时间。 这些都是的子类,但是本身并不是直接调用的(这些类使用继承自的方法。为了使EDT自由绘制进度条,在保持对象层次结构时最好的使用方法是什么?是否具有包装器类,并且有其调用?即使不扩展,它仍然可以按我期望的那样工作吗? 编辑:澄清我的问题,即使他们已经是子类,我如

  • 问题内容: 您好,我想知道从swingworkerthread向jtextarea添加文本的最佳方法是什么,我创建了另一个类,Threadsclass()。execute()调用了jbutton。并且线程与此代码并行运行 现在id要做的是将x的值添加到主gui上的文本区域,任何想法都值得赞赏。 问题答案: JavaDocs有一个很好的例子 看一下发布和处理 潜在的意图是,您仅需要从事件调度线程中更

  • 我有个问题。 我有一个。它将创建。 按下

  • 问题内容: 我是Java的新手,我看了一些有关SwingWorker的教程。但是,我不确定如何使用在上一个问题中给出的示例代码来实现它。 任何人都可以就我的代码片段解释如何使用SwingWorker和/或将我引向一个不错的教程吗?我已经看过了,但不确定自己是否了解。 问题答案: 通常,用于在中执行长时间运行的任务。 在事件调度线程(EDT)上运行长时间运行的任务可能会导致GUI锁定,因此要做的一件

  • 问题内容: 我在FileReader上应用SwingWorker时遇到问题,我的观点是我需要在SwingWorker上实现FileReader,以使UI显示文件中的文本,这是我的代码 但是,它不会在UI文本区域上附加任何内容 有人有解决方案吗?谢谢 问题答案: 对我来说效果很好:

  • 问题内容: 我正在尝试在我的应用程序中实现一个类。有没有办法设置时间长度,之后SwingWorker会“超时”?我当时在想,也许会抛出一个异常,我可以捕捉然后处理。我只是不确定如何实现它。 感谢你的帮助! 问题答案: 为什么不将您的任务嵌入到Runnable中,将其放入新的单线程ExecutorService中,然后在适当的超时时间内对生成的Future执行。这将为您提供超时功能,因为如果作业未及