2011-05-21 45 views
2

我正在使用此代码来创建线程。Java多线程控制

 while ((strLine = br.readLine()) != null) { 
       r = new runnable(strLine); 
       new Thread(r).start(); 
       x++; 
       Thread.sleep(100); 
     } 

如何控制在任何时间点运行的线程的最大数量? 这段代码有问题,内存使用不断上升(内存泄漏)有没有更好的方法来做到这一点? 我尝试使用调度程序,但没有帮助。

回答

10

您可以使用ExecutorService来创建约束线程池。

ExecutorService executor = Executors.newFixedThreadPool(10); 

将创建一个包含10个可用线程的池。您可以致电

executor.submit(new Runnable() { ... }) 

为每个工作单元。

编辑:我应该注意到这个功能只能在Java 1.5及更高版本中使用。

+0

现在正常工作:)谢谢 – user557348 2011-05-21 05:35:10