我有創建者類,它具有創建線程的匿名內部可運行類。我也有創建GUI的GUI類,並且在按鈕按下時執行「Creator」類。但是,然後我的GUI凍結,直到完成由「創建者」創建的所有線程。我發現SwingWorker可以在這種情況下幫助我,但我無法理解如何在這種特殊情況下創建一個。還有什麼比SwingWorker更簡單的方法嗎?SwingWorker運行創建線程的類。 Java
這裏是我的創造者類的代碼:
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) {
}
}
}
}
你可以在你創建線程的地方顯示一些代碼嗎? – 2012-07-24 20:21:37
好的,我會編輯我的代碼,我會盡量簡化它,現在我們可以做到 – 2012-07-24 20:23:37
,看看 – 2012-07-24 20:33:50