def _thread_extract(self):
        """Extract the files in the file list one by one."""
        # Extract 7z and rar whole archive - if it SOLID - extract one file is SLOW
        if self._type in (SEVENZIP,) and _7z_exec is not None:
            cmd = [_7z_exec, 'x', '-bd', '-p-',
                   '-o' + self._dst, '-y', self._src]
            proc = process.Process(cmd)
            proc.spawn()
            proc.wait()
            self._condition.acquire()
            for name in self._files:
                self._extracted[name] = True
            self._condition.notify()
            self._condition.release()
        if self._type in (RAR,) and _rar_exec is not None:
            cwd = os.getcwd()
            os.chdir(self._dst)
            cmd = [_rar_exec, 'x', '-kb', '-p-',
                   '-o-', '-inul', '--', self._src]
            proc = process.Process(cmd)
            proc.spawn()
            proc.wait()
            os.chdir(cwd)
            self._condition.acquire()
            for name in self._files:
                self._extracted[name] = True
            self._condition.notify()
            self._condition.release()
        else:
            for name in self._files:
                self._extract_file(name)
        self.close()