iteye_17151 2011-08-12 10:34
浏览 201
已采纳

多线程问题

public synchronized String test(String xml) throws Exception {
        String xmlSign = null;
        String url = "http://" + config.getAddress() + ":" + config.gePort();
        PostMethod post = new PostMethod(url);
        post.setRequestBody(xml);
        post.setRequestHeader("Content-Length","");
        post.setRequestHeader(" Content-Type", "");

        HttpClient client = new HttpClient();
        client.getHttpConnectionManager().getParams().setSoTimeout(300000);

        int result;
        try {
            result = client.executeMethod(post);
            // 返回200为成功
            String repContent = post.getResponseBodyAsString();
            if (repContent == null || "".equals(repContent)) {
                post.releaseConnection();
                throw new Exception("签名返回错误:" + repContent);
            }
            repContent.replaceAll("\n", "");
            if (200 == result) {
                int beginSign = repContent.indexOf("<a>") + 6;
                int endSign = repContent.indexOf("</a>");
                xmlSign = repContent.substring(beginSign, endSign);
            } else {
                post.releaseConnection();
                throw new Exception("连接码为:" + repContent);
            }

            // 返回的内容
            post.releaseConnection(); // 释放连接
        } catch (HttpException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
        }
        return xmlSign;
    }

 最近做某系统,需要进行数据签名,因此实现了签名方法;但是方法写好了,出现了线程问题没办法把方法体设为同步的。因为HTTP的连接可能不稳定,所以当多个线程到这里时候就好出现等待,假如10个线程同时到达,对后一个线程访问的时候可能会等待50分钟,这样就得不偿失了。怎么解决这种问题。

 

  • 写回答

5条回答 默认 最新

  • myali88 2011-08-12 13:01
    关注

    [quote]
    奥,我多线程了解太差。现在想问一个线程进入方法中XML的值为A,第二个线程进入方法是XML的值是B。但线程1还没执行到 post.setRequestBody(xml); XML会不会出现被替换。
    [/quote]
    方法内部的局部变量都是线程安全的。这里的参数xml也是,一方面方法是传值的,传的就是对xml内容的一个引用,另一个方面,String本身是不可变类,对象内容是不可变的,如果变了,那就不是同一个对象了,xml的引用也不同。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 matlab解优化问题代码
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导
  • ¥15 docker模式webrtc-streamer 无法播放公网rtsp
  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥15 基于图神经网络的COVID-19药物筛选研究
  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?