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条回答

    报告相同问题?

    悬赏问题

    • ¥15 chaquopy python 安卓
    • ¥50 Kubernetes&Fission&Eleasticsearch
    • ¥15 有没有帮写代码做实验仿真的
    • ¥15 報錯:Person is not mapped,如何解決?
    • ¥30 vmware exsi重置后登不上
    • ¥15 易盾点选的cb参数怎么解啊
    • ¥15 MATLAB运行显示错误,如何解决?
    • ¥15 c++头文件不能识别CDialog
    • ¥15 Excel发现不可读取的内容
    • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题