12
返回列表 发新帖
楼主: vzh818

[原创] 相对Vector,ArrayList在什么的情况下会因异步出现问题?

[复制链接]
论坛徽章:
1
授权会员
日期:2009-03-31 23:14:12
11#
 楼主| 发表于 2008-9-24 16:06 | 只看该作者
web程序,其实每个请求都是一个线程!

要的就是这句话,至此,结帖!

谢谢各位!

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2009-03-31 23:14:12
12#
 楼主| 发表于 2008-9-26 10:18 | 只看该作者
不能结,继续!!!
“每个请求就是一个线程,多个用户同时请求就是多线程了,同样在web中需要注意线程安全。”
还是根据题目实际情况来分析,多个用户同时执行提交功能,那就是多线程操作!
而程序中是把数据库中的数据读取后add至arraylist变量中,那么多个线程的请求会同时add至arraylist变量,这样数据就会大于实际读取的数据!??
可我同时点击的时候,Excel导出的数据依然正确,这就是我不解的地方。
ps:同时点击,会有一个时间差,假设1s。但数据量大,程序执行需要数秒,所以这个时间差不会影响“模拟多线程”。
还请大师再赐教。

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2009-03-31 23:14:12
13#
 楼主| 发表于 2008-9-26 10:23 | 只看该作者
先自己回答:
如果每次请求都是实例化arraylist,单独给其分配内存空间。那即使多用户同时操作,arraylist在add的时候,就不会出现安全问题!??

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2009-03-31 23:14:12
14#
 楼主| 发表于 2008-9-26 10:38 | 只看该作者
  1. List content = new Vector();//在这里实例化,每次分配新的内存空间。所以不管是vector还是arraylist都不会引起安全问题???
  2.                            
  3.                             List rowContent = null;
  4.                            
  5.                     for (int n = 0; n < mpmsOrdersInfoList.size(); n++){
  6.                             rowId ++;
  7.                                     //设置内容
  8.                             rowContent = new Vector();
  9.                             /** 组织订单信息 start */
  10.                             MpmsOrdersInfo ordersI = (MpmsOrdersInfo)mpmsOrdersInfoList.get(n);
  11.                            
  12.                             // 取出集合数据放入数组中
  13.                             String[] labelContent = this.getLableContent(ordersI, radioValue);
  14.                            
  15.                                 int allColumn = rowOneLine.size();
  16.                                 
  17.                                 //遍历订单信息写入Excel中
  18.                                 int lableContentLength = labelContent.length;
  19.                             for (int i = 0; i < lableContentLength; i++) {
  20.                                     if (i == 0) {
  21.                                             rowContent.add("" + (n+1));
  22.                                     }
  23.                                     rowContent.add(labelContent[i]);
  24.                             }
  25.                             //填充空格
  26.                             for (int i = 0; i < allColumn - lableContentLength-1; i++) {
  27.                                     rowContent.add(null);
  28.                             }
  29.                             content.add(rowContent);
  30.                             /** 组织订单信息 end */

  31.                         /** 组织订单详细信息 start */
  32.                             MpmsOrdersInfo orderInfo = mpmsOrderBO.getMpmsOrdersInfo(ordersI.getOrderId());
  33.                             orderInfo.getCiUserInfo();

  34.                             //组织订单内容列表
  35.                             Set contentSet = orderInfo.getMpmsStockRelations();
  36.                             List contentList = new Vector();
  37.                             Iterator contentIt = contentSet.iterator();
  38.                             while(contentIt.hasNext()){
  39.                                     contentList.add((MpmsStockRelation)contentIt.next());
  40.                             }
  41.                         
  42.                         for (int ci = 0; ci < contentList.size(); ci++){
  43.                                 rowContent = new Vector();
  44.                                 MpmsStockRelation mpmsStockRelation=(MpmsStockRelation)contentList.get(ci);
  45.                                 //取出订单详细信息数据放入数组中
  46.                                 String[] orderInfoContent = getOrderInfoContent(mpmsStockRelation);
  47.                                     //填充空格
  48.                                 for (int j = 0; j < lableContentLength + 1; j++) {
  49.                                         rowContent.add(null);
  50.                                 }
  51.                                     //遍历订单详细信息
  52.                             for (int oi = 0; oi < orderInfoContent.length; oi++) {
  53.                                     if (oi == 0) {
  54.                                                 rowContent.add("" + (ci+1));
  55.                                         }
  56.                                     rowContent.add(orderInfoContent[oi]);
  57.                                 }
  58.                             content.add(rowContent);
  59.                         }
  60.                         /** 组织订单详细信息 end */
复制代码

使用道具 举报

回复
论坛徽章:
5
生肖徽章2007版:虎
日期:2009-01-22 14:06:54生肖徽章2007版:狗
日期:2009-03-19 22:36:35生肖徽章2007版:马
日期:2009-05-11 11:00:59生肖徽章2007版:鼠
日期:2009-06-02 16:41:21生肖徽章2007版:龙
日期:2009-10-26 17:48:58
15#
发表于 2008-9-26 14:34 | 只看该作者
如果没有2个线程同时操作一个List对象,就别用Vector()。
每个用户的请求是多线程,没错,但每个线程都会是操作新的对象吧,你如果都操作同一个static的List
,用ArrayList()的话就会,可能,有问题,不过这种脑残做法一般没有。

使用道具 举报

回复
论坛徽章:
0
16#
发表于 2008-9-26 16:08 | 只看该作者
应该不是并发的吧.

使用道具 举报

回复
论坛徽章:
1
设计板块每日发贴之星
日期:2008-09-29 01:02:56
17#
发表于 2008-9-28 11:13 | 只看该作者

名牌大厂出品4.3寸导航仪只要680元

联系QQ1:337302151   联系QQ2:337155327(正常上班时间均在线)


    为您省油,为您省钱,为您省时间,从此不走冤枉路!现在这一切让我们的GPS来为您搞定!



    深圳一线大厂生产,该厂为国内乃至全球最大的GPS生产商之一,是众多名牌导航仪OEM生产商,同样的外观,同样的用料,同样的质量,同样的服务,我们现在的价格仅为名牌机价格的1/3。产品为中性礼盒包装,但产品用料和质量绝对和名牌机一样,绝非山寨机可比。送人或者自用都是不错的选择。

    我们是该公司产品的主要代理商,由于省却了中间渠道费用、市场推广费用以及软件授权费用,所以我们能以更低的价格回馈消费者。
   
    售后服务:质量问题7天包退,3个月包换,一年免费保修,终生维修!使用不满意,7天内免费退货!(须外观无损伤划痕,配件齐全不影响第二次销售)

    免费安装各种最新地图,地图版本目前最新,为08年5月地图,基本做到实时更新,包含最新的杭州弯大桥地图。终身免费提供地图升级服务。365天天天提供技术支持。包您学会操作方法!

    丰富的功能;包含GPS导航功能、预警测速功能、FM音乐发射功能、MP3 MP4影音功能、PDA功能等

    高端机则带:蓝牙电话免提功能、AV倒车影像功能、无线AV倒车影像功能等

    可选配1G  2G  4G名牌 SD卡



*系统平台:Microsoft Widows CE.NET 4.2
*处理器:400MHz主频
*内存:64MB SDRAM & 64MB Flash
*GPS模块:高灵敏度SIRF III接收技术,快速准确定位
*GPS导航:通过SD卡装入电子地图导航软件实现卫星定位导航功能,真人语音发声
*音频播放:支持WMA,MP3格式的音频播放,支持喇叭、耳机播放两种方式,支持顺序播放、随机播放、循环播放
*视频播放:支持WMV,ASF和AVI文件格式的MP4播放,480x 272像素
*FM发射:通过FM发射功能,可使您通过汽车音响享受音乐及语音导航
*图片浏览:支持JPG、BMP格式的图片浏览
*电子书阅读:支持txt格式的电子文本阅读,支持电子书功能下多任务操作,如同时播放音乐等
*计算器:自带普通计算器和科学计算器,方便应用
*游戏:俄罗斯方块,扫雷,贪吃蛇,连连看,中国象棋
*系统设置:支持多国语言设置,时间设置,声音设置,背光设置电源设置,文件管理,坐标调整,系统升级,系统资源
*外壳结构:金属烤漆,不锈钢包边
*电池:内置 1200mAh锂离子充电电池,充满电后可使用3-3.5小时
*无线倒车后视:配广角摄像头,可以无线传上倒车图像在GPS上显示,让您开车更轻松更自如,是您开车的好助手(部分机型)
*AV-IN输入:支持AV-IN输入功能,界面可自动切换(部分机型)
*蓝牙功能:支持蓝牙功能,驾车通话两不误(部分机型)
*配件:电源适配器、USB连接线、(随机附送耳机、车载电源适配器、车载固定架)
*LCD显示屏:4.3”, TFT LCD,480x272分辨率,160000色,触摸屏
*外形尺寸:120*80*21mm

联系QQ1:337302151   联系QQ2:337155327(正常上班时间均在线)


很酷的开机界面

主界面

还是主界面

设置界面

游戏界面

蓝牙界面

h=还是蓝牙界面

FM音频发射,可以将音乐或者导航声音从主音响输出

导航界面(地图随你选)

导航地图

导航地图

杭州湾大桥

测速提醒,不怕罚单漫天飞了

精美的包装盒

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
18#
发表于 2008-9-28 11:14 | 只看该作者
原帖由 justforregister 于 2008-9-23 12:15 发表

那你到底懂不懂多线程呢?


考虑并发,是对同一个对象进行同时操作,web你每个请求都是对新对象操作了,都不存在什么并发问题了,虽说是多线程,但是你完全没有必要考虑这么多啊!

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2009-03-31 23:14:12
19#
 楼主| 发表于 2008-10-6 12:42 | 只看该作者
感谢各位的分享、交流!
谢谢!!
至此,可基本结帖。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表