Java多线程控制

use*_*348 2 java multithreading memory-leaks

我正在使用此代码来创建线程.

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

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

dle*_*lev 10

您可以使用an ExecutorService来创建受约束的线程池.

ExecutorService executor = Executors.newFixedThreadPool(10);
Run Code Online (Sandbox Code Playgroud)

将创建一个包含10个可用线程的池.然后你可以打电话

executor.submit(new Runnable() { ... })
Run Code Online (Sandbox Code Playgroud)

对于每个工作单元.

编辑:我应该注意,此工具仅适用于Java 1.5及更高版本.