Я пытаюсь использовать большое количество SwingWorkers (~ 100). У меня есть классИспользование большого количества параллельных SwingWorkers
Creature extends SwingWorker<Creature, Point>
и я хочу, чтобы каждое экземплярирование перемещалось независимо в одно и то же время. Я использую SwingWorker, поскольку позиция каждого экземпляра представлена в графическом интерфейсе и постоянно обновляется. На данный момент только 10 будут перемещаться, а другие не будут, так как the max thread limit of SwingWorker is 10.. Предложение связанной статьи состоит в том, чтобы поместить каждый SwingWorker в свой собственный поток, поскольку они реализуют Runnable и позволят обойти этот предел.
Я попытался сделать это, но ничего не появилось, так что я его испортил. Как увеличить количество доступных SwingWorkers (используя метод, определенный в статье или иначе)?
Executor ex = Executors.newCachedThreadPool();
for(int i = 0; i < 20; i++){
final Creature c = new Creature(this);
Thread t = new Thread(c){
public void run(){
c.execute();
}
};
ex.execute(t);
}
Не передавайте Темы к Исполнителю. вместо этого пропустите Runnable. –
@PeterLawrey Вы имеете в виду 'Runnable t = new Thread (c) {...}'? Я просто попробовал, это не сработало – Daniel
Я имею в виду, что не создаю нить. Если это не работает, вы делаете что-то неправильно. 'Executor.execute (Runnable)' принимает Runnable. –