java_shixisheng 2019-01-28 15:16
浏览 512

并发编程框架Disruptor,执行shutdown就会卡死。

在使用并发编程框架Disruptor,执行shutdown就会卡死。

 public synchronized  void authNewPersonalByRotmote() {
        if (flag) return;
        flag = true;
        log.info("获取待远程验证的身份证记录");
        NewDisruptorPublisher publisher= NewDisruptorPublisher.getNewPersonalInstance();
        try {
            List<PersonalInfo> list = personalInfoDao.getPersonalByAllWaitAuth();
            if (list.size() < 1) {
                flag = false;
                return;
            }
            //按照姓名身份证号 逐条远程验证获取回执
            for (PersonalInfo info : list) {
                publisher.publish(new NewPersonalEventArgs(info));
            }
        } catch (Exception ex) {
            log.error("身份证验证发生错误", ex);
            return;
        }finally {
            publisher.shutdown();
            flag = false;
        }
    }

如果执行disruptorNewPersonal.shutdown();程序就被卡死、如果不执行Handler中的事件正常执行

 public void shutdown() {
        if (personalFlag) {
           disruptorPersonal.shutdown();
            personalFlag = false;
        }
        if (personalNewFlag) {
           disruptorNewPersonal.shutdown();
           personalNewFlag = false;
        }
        //   disruptorEntry.shutdown();
        if (entryFlag) {
            disruptorEntry.shutdown();
            entryFlag = false;
        }
        if (fileFlag) {
            disruptorFile.shutdown();
            fileFlag = false;
        }
    }
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 对于相关问题的求解与代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
    • ¥15 保护模式-系统加载-段寄存器
    • ¥15 电脑桌面设定一个区域禁止鼠标操作
    • ¥15 求NPF226060磁芯的详细资料