user557348
user557348

Reputation: 139

Java Multi Threading Control

I am using this code to create threads.

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

How can I control the maximum number of threads running at any point of time? This code has issues where memory used keeps rising(memory leak) is there a better way to do this? I tried using scheduler but didnt help.

Upvotes: 2

Views: 1419

Answers (1)

dlev
dlev

Reputation: 48596

You can use an ExecutorService to create constrained thread pools.

ExecutorService executor = Executors.newFixedThreadPool(10);

will create a pool with 10 available threads. You can then call

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

for each unit of work.

EDIT: I should note that this facility is only available in Java 1.5 and later.

Upvotes: 10

Related Questions