日期:2014-05-20  浏览次数:20721 次

相对Vector,ArrayList在什么的情况下会因异步出现问题
例:将数据库中10000条数据导出至Excel中。
1、将数据读取后保存在Vector里,再输出至Excel中。
2、将数据读取后保存在ArrayList里,再输出至Excel中。
以上两种方法都可以实现。

关键在于Vector是同步,线程安全;ArrayList非线程安全。

但我在两个页面上同时执行导出功能,导出的Excel数据均正常。这种同时执行导出功能算是并发操作吗?并发是因为哪些情况出现。

那什么样的具体情况,使用ArrayList会出现问题?

------解决方案--------------------
同步问题会在多线程访问单一资源时出错。
也就是说如果你的Arraylist是静态的,那么多线程访问就会出现问题。
但是如果针对每个请求,实例化一个arraylist 那么就不存在资源竞争的问题,这里的问题就变成了性能问题。
就是说如果一千个人同时导出那么你的server就可能不再响应。
------解决方案--------------------
这要看你的2个ArrayList是不是同一个对象,如果不是,不会有问题
------解决方案--------------------
将你的Vector或者ArrayList保存到request或者servletContext里面效果是不同的,这就是线程安全问题.
------解决方案--------------------
探讨
首先感谢回复。

我就是想知道,客户在使用系统过程中,什么具体情况下会线程不安全,会并发??(程序中不含多线程,自己写一个多线程不算)

顶一下期待回答!