仓酷云

标题: 发布一篇HttpSession的线程平安成绩及注重事项 [打印本页]

作者: 仓酷云    时间: 2015-1-18 11:19
标题: 发布一篇HttpSession的线程平安成绩及注重事项
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net网页编程里有这些工具吗?要简单多少?。
HttpSessionsession= request.getSession();
List<Product>list=session.getAttribute("productCart");
myService.save(list);//保留购物车数据到数据库
这个对象会被屡次利用,也会被统一个用户的多个页面利用,以是他关于体系来讲是线程不平安的。
好比用户在从产物列内外面选择产物,这面选择3种,他点了检察购物车
该用户还开了另外一个页面,持续选择产物。
此时,在显现购物车的页面,有大概运转在一半时,其已选择的产物列表,并另外一个页面的操纵修正了。以是显现的产物数目有大概并非3种。
由于session必要保持以后用户的信息,以是其在多个线程里是共享的。以是是线程不平安的。
不外,这个是外表征象,我们只需准确利用事件,包管数据的正确性,外表的成绩能够不必管它。
我们能够把session内里的数据别的保留到一个新的数据对象里,这个对象不再由于session的改动而呈现变化。这个对象传送给营业层举行事件处置,包管数据级其余正确。
万万不要把session,大概session内里的对象间接传送给营业层,由于你的营业处置一半时,一样大概呈现session对象被改动的情形。有大概形成主要数据呈现偏向。
举例:
session对应三个产物,
事件内里轮回了产物,并盘算了总代价,
盘算终了,筹办保留时,session变了,产物酿成了4个。
此时入手下手保留。产物保留了4个,可总代价却仍是3个的。
呈现了数据纷歧致。
修正后的例子
session对应三个产物
从头天生一个产物对象数组,把session数据复制过去,然后传送给营业层
事件内里轮回盘算总代价
盘算终了,此时session变了,但其实不影响我们这个新的产物数组对象
保留,三个产物,代价也准确。
HttpSessionsession= request.getSession();
List<Product> list=session.getAttribute("productCart");
List<Product>listNew=newArrayList<Product>();
ProductpNew;
for(Productp:list){
 pNew=newProduct();
 pNew.setProductId(p.getProductId());
 //别的的复制参数的语句
 listNew.add(pNew);//保留到新的列内外面
}
myService.save(listNew);//保留购物车数据到数据库,这个是平安的
总结:
有些线程平安成绩是很潜伏的,等你出了成绩,极可能基本不以为会是那边出的成绩。记着一点,Java内里的对象传送的是对象的援用,只需2个中央用了不异的援用,则别的中央的变化,这一面也会变化。
原文:http://www.java2000.net/p9667

你精通任何一门语言就最强大。现在来看,java的市场比C#大,C#容易入手,比较简单,java比较难
作者: 仓酷云    时间: 2015-1-20 20:20
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者: 山那边是海    时间: 2015-1-21 10:43
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
作者: 若相依    时间: 2015-1-24 15:37
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者: 再见西城    时间: 2015-1-25 08:40
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
作者: 莫相离    时间: 2015-2-6 18:26
Java 编程语言的风格十分接近C、C++语言。
作者: 小魔女    时间: 2015-2-18 02:01
Java 编程语言的风格十分接近C、C++语言。
作者: 乐观    时间: 2015-2-27 21:38
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
作者: 变相怪杰    时间: 2015-2-28 03:42
Java 编程语言的风格十分接近C、C++语言。
作者: 只想知道    时间: 2015-3-9 20:31
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者: admin    时间: 2015-3-9 20:55
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者: 透明    时间: 2015-3-17 01:08
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
作者: 不帅    时间: 2015-3-23 10:40
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言




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