Start task.
        @target: callable to run with *args and **kargs arguments.
        @callback: callable executed after target.
        @name: thread name
        @complete: complete executed after target in finally

def run(self, target, callback = None, name = None, complete = None, *args, **kargs):
        """
        Start task.
        @target: callable to run with *args and **kargs arguments.
        @callback: callable executed after target.
        @name: thread name
        @complete: complete executed after target in finally
        """
        self.count_lock.acquire()
        if not self.workers:
            self.count_lock.release()
            self.add(name = name)
        else:
            self.count_lock.release()
        self.tasks.put((target, callback, name, complete, args, kargs))