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;
    }
    }

  • 相关阅读:
    Javascript笔记09:Javascript的下拉式导航菜单
    Javascript笔记08:Javascript的if...else语句
    Android(java)学习笔记84:SQLiteDatabase的query方法参数
    Android(java)学习笔记83:各种边距设置
    Android(java)学习笔记82:利用SpannableString设置复合文本
    PHP笔记06:http响应中的状态码
    html笔记04:在html之中导入css两种常见方法
    POJ 3307 Smart Sister
    ZOJ 2872 Binary Partitions
    HDU 4685 Prince and Princess
  • 原文地址:https://www.cnblogs.com/rgqancy/p/5329689.html
Copyright © 2011-2022 走看看