zoukankan      html  css  js  c++  java
  • Java 线程内 递归 Bug 一例

    一个线程的run方法里使用递归方法,出了Bug。

    private boolean ispass(String creationId){
    List<Map> maps =creationService.getCreationById(creationId);
    if(maps != null && maps.size()>0){
    Map m = maps.get(0);
    String state= (String) m.get("STATE");
    if(state != null && state.equals("0")){
    return true;
    }else{
    try {
    if(falg == 10){
    return false;
    }
    Thread.sleep(1000 * 60);
    falg++;
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return false;
    }
    ispass(creationId);
    }
    }else{
    return false;
    }
    return false;
    }

    同事的解决办法,修改代码通过抛出异常的方式,也算解决了。当然了我不认可 。:)

    private boolean ispass(String creationId) throws SecussException{
    List<Map> maps =creationService.getCreationById(creationId);
    if(maps != null && maps.size()>0){
    Map m = maps.get(0);
    String state= (String) m.get("STATE");
    if(state != null && state.equals("0")){
    throw new SecussException("ok");
    }else{
    try {
    if(falg == 10){
    return false;
    }
    Thread.sleep(1000 * 60);
    falg++;
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return false;
    }
    ispass(creationId);
    }
    }else{
    return false;
    }
    return false;
    }

    我的解决办法:调试代码,发现问题根源,该返回的地方,没返回;不该返回的地方,返回了错误的值。

    private boolean ispass(String creationId){
    List<Map> maps =creationService.getCreationById(creationId);
    if(maps != null && maps.size()>0){
    Map m = maps.get(0);
    String state= (String) m.get("STATE");
    if(state != null && state.equals("0")){
    return true;
    }else{
    try {
    if(falg == 10){
    return false;
    }
    Thread.sleep(1000 * 60);
    falg++;
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return false;
    }
    return ispass(creationId);
    }
    }else{
    return false;
    }
    }

  • 相关阅读:
    git 常用命令
    重要知识点
    HTML 标记语言
    js类型转换
    伪数组变数组 js
    在 JavaScript 中为什么 typeof null 的结果是 object?
    HTML中href、src区别
    解决for循环插入同一元素无法重复插入问题
    HTML5-语义化
    mount 和 /etc/fstab关系。
  • 原文地址:https://www.cnblogs.com/rgqancy/p/5329689.html
Copyright © 2011-2022 走看看