     public func subscribe(topic: String, subscriber: AnyObject? = nil, queue: YJScheduler.Queue = .default,  handler: @escaping YJSSubscribeHandler) {
         YJLogVerbose("[YJScheduler] \(String(describing: subscriber)) 订阅 \(topic)")
         let target = YJSchedulerSubscribe(topic: topic, subscriber: subscriber ?? self, queue: queue, completionHandler: handler)
-        self.execute(queue: self.workQueue) { (self: YJScheduler) in
+        self.workQueue.async { [unowned self] in
             let subArray = self.subDict[topic] ?? []
             var newArray = [target]
             for item in subArray {

    public func publish(topic: String, data: Any? = nil, serial: Bool = false, completion handler: YJSPublishHandler? = nil) {
        self.initLoadScheduler()
        YJLogVerbose("[YJScheduler] 发布\(topic), data:\(data ?? "nil")")
        self.execute(queue: self.workQueue) { (self: YJScheduler) in
            for item in self.intArray {
                if item.interceptor != nil && item.canHandler(topic) {
                    item.completionHandler(topic, data, handler)

    private var subDict = Dictionary<String, Array<YJSchedulerSubscribe>>()
    private var intArray = [YJSchedulerIntercept]()
    
}

extension YJScheduler {
