当前位置:嗨网首页>书籍在线阅读

33-使用执行器替代线程组

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

11.12 使用执行器替代线程组

ThreadGroup 类提供了按层次结构对线程进行分组的机制,这样就可以在一次调用时完成对同组所有线程的调用。虽然默认所有的线程都属于同一组,但是可以在创建线程时为其指定不同的分组。

不管怎样,线程组其实并没有提供任何有用的功能。

  • 还是需要创建线程并管理线程的状态。
  • 控制线程组中所有线程状态的方法已经过期,而且也不鼓励使用。

如果需要在普通结构下对线程进行分组,那么使用 Executor 会更好,比如 ThreadPoolExecutor 提供了更多的功能。

  • 不用担心管理线程。执行器可以创建、复用线程,这节省了执行资源。
  • 执行器可以执行实现了 RunnableCallable 接口的并发任务。利用 Callable 接口可以实现带有返回结果的任务,这相比传统任务是一个巨大的优势。
  • 向执行器发送任务后,它返回了 Future 对象,使用该对象可以简单容易地获取任务的状态、返回结果,以及任务的完成情况。
  • 使用 ScheduledThreadPoolExecutor 类实现的执行器,能够安排任务按时重复执行。
  • 指定池的最大线程数,这就简单地控制了执行器使用的资源,它不会同时运行超过该数量的任务。

基于这些原因,使用执行器替代线程组会更好。