2
我试图使用大量的SwingWorkers(〜100)。我有一个类使用大量的并发SwingWorkers
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);
}
不要通过线程提供给Executor。而是传递Runnable。 –
@PeterLawrey你的意思是'Runnable t = new Thread(c){...}'?我只是试过,它不起作用 – Daniel
我的意思是根本不创建线程。如果这不起作用,你做错了什么。 'Executor.execute(Runnable)'带有一个Runnable。 –