Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 442
user557348 Avatar asked Sep 20 '26 05:09

user557348


1 Answers

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.

like image 86
dlev Avatar answered Sep 21 '26 20:09

dlev



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!