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:: 4.1
     The ``io_loop`` argument is deprecated.
code: def close(self):
      if self.close_executor:
          self.executor.shutdown()
      self.executor = None
  
imports: from __future__ import absolute_import, division, print_function
  import errno
  import os
  import sys
  import socket
  import stat
  from tornado.concurrent import dummy_executor, run_on_executor
  from tornado.ioloop import IOLoop
  from tornado.platform.auto import set_close_exec
  from tornado.util import PY3, Configurable, errno_from_exception
label_desc: Use image node_id 2 for calling the ExecutorResolver obj's underlying member method code with example usage: obj.close() without return types