首页 > 数据库 > mysql教程 > 编写线程安全的JSP程序_MySQL

编写线程安全的JSP程序_MySQL

WBOY
发布: 2016-06-01 14:09:12
原创
1270 人浏览过

作者:徐春金


   
      String inssql = "insert into buy(empid, name, dept) values (?, ?, ?,?)";
      stmt = conn.prepareStatement(inssql);

      stmt.setString(1, name);
      stmt.setString(2, procuct);   
      stmt.setInt(3, quantity);
      stmt.execute();
    }

    catch (Exception e)
    {
        System.out.println("SQLException was thrown: " + e.getMessage());
    }
    finally //close connections and     {
        try {
          if(stmt != null)
            stmt.close();
          if(conn != null)
            conn.close();
        } catch (SQLException sqle) {
            System.out.println("SQLException was thrown: " + sqle.getMessage());
        }
    }
}
%>


在该JSP文件中加上: ,使它以单线程方式执行,这时,仍然只有一个实例,所有客户端的请求以串行方 式执行。这样会降低系统的性能.

  • 对函数savebuy()加synchronized进行线程同步,该JSP仍然以多线程方式执行,但也会降低系统的性能
    public synchronized void savebuy()
    {
           ......
    }
  • 采用局部变量代替实例变量,函数savebuy()声明如下:
    因为在savebuy()中使用的是传给他的形参,是在堆栈中分配的,所以是线程安全的.
    public void savebuy(String name,String product, int quantity)
    {
          ......
    }

    调用方式改为:
    String name
    String product;
    long quantity;

    name=request.getParameter("name");
    product=request.getParameter("product");
    quantity=request.getParameter("quantity");
    savebuy(name,product,quantity)
    %>

  • 相关标签:
    来源:php.cn
    本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板