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 Qt下使用tcp获取数据的详细操作
    • ¥15 idea右下角设置编码是灰色的
    • ¥15 全志H618ROM新增分区
    • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
    • ¥15 NAO机器人的录音程序保存问题
    • ¥15 C#读写EXCEL文件,不同编译
    • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
    • ¥15 扩散模型sd.webui使用时报错“Nonetype”
    • ¥15 stm32流水灯+呼吸灯+外部中断按键
    • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符