仓酷云

标题: JAVA编程:编写线程平安的JSP使用程序 [打印本页]

作者: 活着的死人    时间: 2015-1-18 11:06
标题: JAVA编程:编写线程平安的JSP使用程序
Java的桌面程序开发在java程序员里通常叫swing开发,主要用的swing包里的类开发的,也就是通常说的c/s架构开发  JSP默许是以多线程体例实行的,这是JSP与ASP,PHP,PERL等剧本言语纷歧样的中央,也是它的上风之一,但假如不注重多线程中的同步成绩,会使所写的JSP程序有难以发明的毛病。上面以一个例子申明JSP中的多线程成绩及办理办法。
  1、JSP的中存在的多线程成绩:
  当客户端第一次哀求某一个JSP文件时,服务端把该JSP编译成一个CLASS文件,并创立一个该类的实例,然后创立一个线程处置CLIENT真个哀求。假如有多个客户端同时哀求该JSP文件,则服务端会创立多个线程。每一个客户端哀求对应一个线程。以多线程体例实行可年夜年夜下降对体系的资本需求,进步体系的并发量及呼应工夫.对JSP中大概用的的变量申明以下:
  实例变量
  实例变量是在堆平分配的,并被属于该实例的一切线程共享,以是不是线程平安的。
  JSP体系供应的8个类变量,JSP顶用到的OUT,REQUEST,RESPONSE,SESSION,CONFIG,PAGE,PAGECONXT是线程平安的,APPLICATION在全部体系内被利用,以是不是线程平安的。
  部分变量
  部分变量在仓库平分配,由于每一个线程都有它本人的仓库空间,以是是线程平安的。
  静态类
  静态类不必被实例化,便可间接利用,也不是线程平安的。
  内部资本:
  在程序中大概会有多个线程或历程同时操纵统一个资本(如:多个线程或历程同时对一个文件举行写操纵).此时也要注重同步成绩。
  2、上面的例子存在的多线程成绩:
<p>  <%@pageimport="
javax.naming.*,
java.util.*,
java.sql.*,
weblogic.common.*
"%>
<%
Stringname
Stringproduct;
longquantity;
name=request.getParameter("name");
product=request.getParameter("product");
quantity=request.getParameter("quantity");/*(1)*/
savebuy();
%>
<%!
publicvoidsavebuy()
{
 /*举行数据库操纵,把数据保留到表中*/
 try{
  Propertiesprops=newProperties();
  props.put("user","scott");
  props.put("password","tiger");
  props.put("server","DEMO");
  DrivermyDriver=(Driver)iver").newInstance();
  conn=myDriver.connect("jdbc:weblogic:oracle",props);
  stmt=conn.createStatement();
  Stringinssql="insertintobuy(empid,name,dept)values(?,?,?,?)";
  stmt=conn.prepareStatement(inssql);
  stmt.setString(1,name);
  stmt.setString(2,procuct);
  stmt.setInt(3,quantity);
  stmt.execute();
 }
 catch(Exceptione)
 {
  System.out.println("SQLExceptionwasthrown:"+e.getMessage());
 }
 finally//closeconnectionsand{
  try{
   if(stmt!=null)
    stmt.close();
   if(conn!=null)
    conn.close();
  }catch(SQLExceptionsqle){
   System.out.println("SQLExceptionwasthrown:"+sqle.getMessage());
  }
 }
}
%>  下面的程序摹拟网上购物中的一部分,把用户在扫瞄器中输出的用户名,购置的物品称号,数目保留到表BUY中。在savebuy()函数顶用到了实例变量,以是它不是线程平安的。由于:程序中的每条语句都不是原子操纵,如name=request.getParameter("name");在实行是会对应多个呆板指令,在任什么时候候都大概因体系调剂而转入眠眠形态,让其他的线程持续实行。假如线程A在实行到(1)的时分转入眠眠形态,线程B入手下手实行并改动QUANTITY的值,那末当又到A实行时,它会从挪用savebuy()函数入手下手实行,如许它保留到表中的QUANTITY是被线程B悔改的值,那末线程A对应的用户所实践购置的数目与坚持到表中的数据纷歧致,这是个很严峻的成绩。

你对java乐观有点盲目。java的关键就是在服务器上表现优异,而且它提供了整个开发所需要的工具。应该是说,看哪天。net有没有机会赶上java。
作者: 精灵巫婆    时间: 2015-1-18 20:08
Java 编程语言的风格十分接近C、C++语言。
作者: 老尸    时间: 2015-1-23 10:04
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
作者: 变相怪杰    时间: 2015-1-24 13:52
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
作者: 冷月葬花魂    时间: 2015-1-28 05:54
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
作者: 简单生活    时间: 2015-2-2 13:05
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
作者: 若天明    时间: 2015-2-7 20:40
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
作者: 小女巫    时间: 2015-2-23 10:11
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
作者: 不帅    时间: 2015-3-14 14:58
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者: 莫相离    时间: 2015-3-21 10:07
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2