2

我正在尝试使用大量 SwingWorkers (~100)。我有一堂课

Creature extends SwingWorker<Creature, Point>

我想让每个实例同时独立移动。我正在使用 SwingWorker,因为每个实例化的位置都在 GUI 中表示并且不断更新。目前,只有 10 个会移动,其他不会移动,因为SwingWorker 的最大线程限制为 10。链接文章的建议是将每个 SwingWorker 放在自己的线程中,因为它们实现了 Runnable 并允许绕过那个限制。

我试图这样做,但没有任何结果,所以很明显我把它搞砸了。如何增加可用 SwingWorker 的数量(使用文章中指定的方法或其他方式)?

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);
} 
4

1 回答 1

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));
于 2013-07-24T22:08:03.770 回答