简体   繁体   中英

Running at most n Java threads

I have a CPU intensive application, which can be written in Java. The application consists of few jobs (threads) that run independently.

If I start all the threads at once, the system will be overloaded. How could I start at most n threads at once, and when one thread finishes then a new one is started? By limiting the number of threads running at once, I intend to leave some other processors/cores available for other tasks.

Thanks

You should formulate your threads' tasks as Runnable s or Callable s and then submit them to a fixed thread pool executor. The executor will manage a pool of worker threads and run your tasks from an internal queue on those threads.

See Executors#newFixedThreadPool for a factory method that creates the type of executor you want.

使用固定大小的执行程序池。

 ExecutorService executor = Executors.newFixedThreadPool(4);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM