Vector 和 ArrayList 线程安全比较
程序员文章站
2022-07-14 10:41:43
...
Vector 和 ArrayList 线程安全比较
Vector:线程安全
ArrayList:非线程安全
测试码:
public class Test {
public static void main(String[] args) {
TestThread();
}
public static void TestThread() {
List<Object> list= new ArrayList<Object>(100000);
List<Object> list2 = new Vector<Object>();
int threadCount = 1000;
CountDownLatch countDownLatch = new CountDownLatch(threadCount);
for(int i=0;i<threadCount;i++) {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<100;i++) {
list2.add(new Object());
}
for(int i=0;i<100;i++) {
list.add(new Object());
}
countDownLatch.countDown();
}
}).start();
}
try {
countDownLatch.await();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
System.out.println("ArrayList Size: "+list.size());
System.out.println("Vector Size: "+list2.size());
}
}
发现:
1.当不设置ArrayList初始大小时,程序运行会抛出异常 Vector则不会有这个问题
2.ArrayList.szie()<100000,vector.size()=100000,说明多线程操作vector比ArrayList更安全,稳定,不会出现少操作现象
上一篇: 遵循“安全构造”技术
下一篇: 安装指定版本的dokcer