欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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更安全,稳定,不会出现少操作现象

相关标签: 线程安全