我正在尝试使用大量的SwingWorkers(~100)。我有一个班级
Creature extends SwingWorker<Creature, Point>
我想让每个实例同时独立移动。我正在使用SwingWorker,因为每个实例化的位置都在GUI中表示并且不断更新。目前,只有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);
}
答案 0 :(得分:1)
我建议你写
Executor ex = Executors.newCachedThreadPool();
for(int i = 0; i < 20; i++){
final Creature c = new Creature(this);
ex.execute(new Runnable(){
public void run(){
c.execute();
}
});
}
甚至可以将execute()
更改为run()
并制作生物Runnable
Executor ex = Executors.newCachedThreadPool();
for(int i = 0; i < 20; i++)
ex.execute(new Creature(this));