[英]SwingWorker threads in Java
我現在正在使用swing,我遇到了一些問題,我意識到不可能從http://docs.oracle.com/javase/tutorial/多次執行SwingWorker線程。 uiswing / concurrency / worker.html 。
我的問題是,是否可以創建相同SwingWorker線程的新實例? 在這里的代碼我稱為工作線程'工人'
SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>(){
public void doInBackGround(){
}
};
是否可以創建此線程的多個實例,以便我可以多次調用它? 我嘗試過類似的東西
(new SwingWorker<Void, Void> worker).execute();
但這似乎不起作用。 任何幫助都會被貶低!
每次需要時創建一個新的SwingWorker有什么問題?
如果需要在需要多次運行的實例中存儲某些狀態,則可以使用Runnable或Callable接口並將其提供給SwingWorker執行。 您必須每次都創建SwingWorker,但Runnable或Callable實例可以是相同的。
在下面的示例中,每次都會創建worker實例,但Runnable實例始終相同。
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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.