How to implement simple threading with a fixed number of worker threads

后端 未结 7 902
渐次进展
渐次进展 2020-12-04 06:49

I\'m looking for the simplest, most straightforward way to implement the following:

  • The main program instantiates worker threads to do a task.
  • Only
7条回答
  •  囚心锁ツ
    2020-12-04 07:34

    I think that Executors.newFixedThreadPool fits your requirements. There are a number of different ways to use the resulting ExecutorService, depending on whether you want a result returned to the main thread, or whether the task is totally self-contained, and whether you have a collection of tasks to perform up front, or whether tasks are queued in response to some event.

      Collection tasks = new ArrayList();
      YourTask yt1 = new YourTask();
      ...
      tasks.add(yt1);
      ...
      ExecutorService exec = Executors.newFixedThreadPool(5);
      List> results = exec.invokeAll(tasks);
    

    Alternatively, if you have a new asynchronous task to perform in response to some event, you probably just want to use the ExecutorService's simple execute(Runnable) method.

提交回复
热议问题