2014-12-01 61 views
0

在下面的代码我试图计算的次数execute方法被调用,但count不会增加:为什么在这个例子中var不会递增?

import java.util.concurrent.ExecutorService; 
import java.util.concurrent.Executors; 
import org.junit.Test; 

public class ThreadTest { 

    @Test 
    public void testThread() { 

     ExecutorService es = Executors.newCachedThreadPool(); 
     for (int counter = 0; counter < 10; ++counter) { 

      int count = 0; 
      for (int i = 0; i < 4; i++) { 
       es.execute(new FooWorker()); 
      } 

      count = count + 1; 
      System.out.println((count * 4) + "," + count + " threads created"); 

     } 

    } 

    private final class FooWorker implements Runnable { 
     public void run() { 
      System.out.println("in run"); 
     } 
    } 

} 

为什么count不会增加?

+0

你每增加4个'execute'调用也只增加一次'count'。 – 2014-12-01 16:24:24

+0

您是否每次看到'创建4,1个线程? – sp00m 2014-12-01 16:24:27

回答

4

您重置计数为0,每次迭代...

for (int counter = 0; counter < 10; ++counter) { 

     int count = 0; // count is reset to 0 every loop 
     for (int i = 0; i < 4; i++) { 
      es.execute(new FooWorker()); 
     } 

     count = count + 1; // count will always be 1 here 
     System.out.println((count * 4) + "," + count + " threads created"); 

    } 
0

你重置在外环每次count。我不确定这是否是有意的。

相关问题