class_docstr: OpenLineage listener sends events on task instance and dag run starts, completes and failures.
code: def executor(self):
      if not self._executor:
          self._executor = ThreadPoolExecutor(
              max_workers=8, thread_name_prefix="openlineage_"
          )
      return self._executor
  
imports: from __future__ import annotations
  import logging
  from concurrent.futures import ThreadPoolExecutor
  from datetime import datetime
  from typing import TYPE_CHECKING
  from airflow.listeners import hookimpl
  from airflow.providers.openlineage.extractors import ExtractorManager
  from airflow.providers.openlineage.plugins.adapter import OpenLineageAdapter
  from airflow.providers.openlineage.utils.utils import get_airflow_run_facet, get_custom_facets, get_job_name, print_warning
  from airflow.utils.timeout import timeout
label_desc: Use image node_id 5 for calling the OpenLineageListener obj's underlying member method code with example usage: obj.executor() and returns: self