def METHOD_NAME(self):
    util.debug("Queue._start_thread()")
    # Start thread which transfers data from buffer to pipe
    self._buffer.clear()
    self._thread = threading.Thread(
        target=Queue._feed,
        args=(
            self._buffer,
            self._notempty,
            self._send_bytes,
            self._wlock,
            self._writer.close,
            self._reducers,
            self._ignore_epipe,
            self._on_queue_feeder_error,
            self._sem,
        ),
        name="QueueFeederThread",
    )
    self._thread.daemon = True
    util.debug("doing self._thread.start()")
    self._thread.start()
    util.debug("... done self._thread.start()")
    # On process exit we will wait for data to be flushed to pipe.
    #
    # However, if this process created the queue then all
    # processes which use the queue will be descendants of this
    # process.  Therefore waiting for the queue to be flushed
    # is pointless once all the child processes have been joined.
    created_by_this_process = self._opid == os.getpid()
    if not self._joincancelled and not created_by_this_process:
        self._jointhread = util.Finalize(
            self._thread,
            Queue._finalize_join,
            [weakref.ref(self._thread)],
            exitpriority=-5,
        )
    # Send sentinel to the thread queue object when garbage collected
    self._close = util.Finalize(
        self,
        Queue._finalize_close,
        [self._buffer, self._notempty],
        exitpriority=10,
    )