class_docstr: Resolver implementation using a `concurrent.futures.Executor`.
  
  Use this instead of `ThreadedResolver` when you require additional
  control over the executor being used.
  
  The executor will be shut down when the resolver is closed unless
  ``close_resolver=False``; use this if you want to reuse the same
  executor elsewhere.
  
  .. versionchanged:: 5.0
     The ``io_loop`` argument (deprecated since version 4.1) has been removed.
  
  .. deprecated:: 5.0
     The default `Resolver` now uses `asyncio.loop.getaddrinfo`;
     use that instead of this class.
class_docstr_tok: ["Resolver","implementation","using","a","`","concurrent.futures.Executor","`",".","Use","this","instead","of","`","ThreadedResolver","`","when","you","require","additional","control","over","the","executor","being","used",".","The","executor","will","be","shut","down","when","the","resolver","is","closed","unless","``","close_resolver=False","``",";","use","this","if","you","want","to","reuse","the","same","executor","elsewhere",".","..","versionchanged",":",":","5.0","The","``","io_loop","``","argument","(","deprecated","since","version","4.1",")","has","been","removed",".","..","deprecated",":",":","5.0","The","default","`","Resolver","`","now","uses","`","asyncio.loop.getaddrinfo","`",";","use","that","instead","of","this","class","."]
code: def initialize(
      self,
      executor: Optional[concurrent.futures.Executor] = None,
      close_executor: bool = True,
  ) -> None:
      if executor is not None:
          self.executor = executor
          self.close_executor = close_executor
      else:
          self.executor = dummy_executor
          self.close_executor = False
  
imports: import asyncio
  import concurrent.futures
  import errno
  import os
  import sys
  import socket
  import ssl
  import stat
  from tornado.concurrent import dummy_executor, run_on_executor
  from tornado.ioloop import IOLoop
  from tornado.util import Configurable, errno_from_exception
  from typing import List, Callable, Any, Type, Dict, Union, Tuple, Awaitable, Optional
label_desc: Use image node_id 1 for calling the ExecutorResolver obj's underlying member method code with example usage: obj.initialize(executor, close_executor) without return types