我有“创建者”类,它具有创建线程的匿名内部可运行类。我也有创建 GUI 的 GUI 类,按下按钮执行“创建者”类。但随后我的 GUI 冻结,直到“创建者”创建的所有线程都完成。我发现 SwingWorker 在这种情况下可以帮助我,但我不明白如何在这种特殊情况下创建一个。除了 SwingWorker,还有其他简单的方法吗?
这是我的 Creator 类的代码:
public class Creator {
final ExecutorService es;
Collection<Future<?>> futures = new LinkedList<>();
public Creator() {
es = Executors.newFixedThreadPool(10);
}
public void runCreator() {
for (int i = 0; i < 100; i++) {
futures.add(es.submit(new Check(i)));
}
es.shutdown();
for (Future<?> future : futures) {
try {
future.get();
} catch (Exception ex) {
}
}
}
private class Check implements Runnable {
private int i;
private Check(int i) {
this.i = i;
}
@Override
public void run() {
System.out.println("Number: "+i);
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
}
}
}