Using executors instead of thread groups

The ThreadGroup class provides a mechanism to group threads in a hierarchical structure so you can do operations with all the threads that belong to a thread group with only one call. By default, all the threads belong to the same group, but you can specify a different one when you create the thread.

Anyway, thread groups don't provide any features that make their use interesting:

  • You have to create the threads and manage their status
  • The methods that control the status of all the threads of the thread group have been deprecated and their use is discouraged

If you need to group threads under a common structure, it is better to use an Executor implementation, such as ThreadPoolExecutor. It provides more functionalities, which are as follows:

  • You don't have to worry about the management of the threads. The executor creates and reuses them to save execution resources.
  • You can implement your concurrent tasks by implementing either the Runnable or Callable interface. The Callable interface allows you to implement tasks that return a result, which provides a big advantage over traditional tasks.
  • When you send a task to an executor, it returns a Future object that allows you to know the status of the task and the returned result if it has finished its execution easily.
  • You can schedule your tasks and execute them repeatedly with the special executor implemented by the ScheduledThreadPoolExecutor class.
  • You can easily control the resources used by an executor. You can establish the maximum number of threads in the pool so your executor will never have more than that number of tasks running at a time.

For these reasons, it is better that you don't use thread groups and use executors instead.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.144.8.212