读书人

java 线程安全有关问题

发布时间: 2011-12-15 23:41:24 作者: rapoo

java 线程安全问题

Java code
package com.cfd.drp.client;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import com.cfd.drp.utils.Utils;public class ClientManager {    StringBuffer sb =  new StringBuffer();            private static ClientManager manager = new ClientManager();         private ClientManager() {}    public static ClientManager getInstance() {        return manager;    }        public String showTree() {        Connection connection = null;        sb.delete(0, sb.length());        try {            connection = Utils.getConnection();            tree(connection,0,1);        }catch(Exception e) {            e.printStackTrace();        }finally {            Utils.close(connection);        }                return sb.toString();    }        public void tree(Connection connection,int id,int level) throws SQLException {        String sql = "select * from t_client where pid = ?";        int i= 0;        PreparedStatement ps = null;        ResultSet rs  = null;                try {            ps = connection.prepareStatement(sql);            ps.setInt(1, id);            rs = ps.executeQuery();            while (rs.next()) {                sb.append(rs.getString("name")+"<br>"+"\n");                if(rs.getString("is_leaf").equals("N")) {                    tree(connection,rs.getInt("id"),level);                }            }                        }finally {            Utils.slose(rs);            Utils.close(ps);        }    }}


这个问题是尚学谈DRP项目中的:
正常运行的结果应该是:
所有分销商
华北区
北京
北京市医药股份有限公司
东北区
吉林省
辽宁省
黑龙江省


下面是jsp页面的内容,这样也页面的内容和简单 就是把上面的字符串显示出来就是了:


HTML code
<%    ClientManager manager = ClientManager.getInstance();    out.print(manager.showTree()); %>




但是当我快速刷新页面的时候却就出现问题了。结果变为了,【只有快速刷新的时候才会出现】
所有分销商
华北区
北京
北京市医药股份有限公司
东北区
吉林省
辽宁省
黑龙江省
所有分销商
华北区
北京
北京市医药股份有限公司
东北区
吉林省
辽宁省
黑龙江省

刷新的速度不一样 字符串重复的次数就不一样 请高手指教!谢谢了

[解决办法]
一个单例模式的典型错误应用
1 如下的代码只有一份,属于实例级的属性
Java code
    StringBuffer sb =  new StringBuffer(); 

读书人网 >J2EE开发

热点推荐