Java容器Vector和ArrayList執行緒是否安全案例
阿新 • • 發佈:2019-01-10
一句話:Vector執行緒安全,ArrayList執行緒不安全,以下是實驗程式碼:
package com.yarm.test; import java.util.ArrayList; import java.util.Vector; public class ArrayListAndVectorThread { //例項化兩個靜態容器 static Vector<Integer> vector = new Vector<Integer>(); static ArrayList<Integer> arrayList = new ArrayList<Integer>(); public static class ArrayListThread implements Runnable{ public void run(){ for (int i = 0; i < 10000000; i++) { //執行緒不安全 vector.add(i); //執行緒安全 arrayList.add(i); } } } // main函式 public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(new ArrayListThread()); Thread t2 = new Thread(new ArrayListThread()); t1.start(); t2.start(); t1.join(); t2.join(); System.out.println("arrayList長度:" + arrayList.size()); System.out.println("vector長度:" + vector.size()); } }
控制檯輸出結果:
arrayList長度:19991800
vector長度:20000000
最後結論:
依照實驗結果說明,ArrayList輸出的長度不是20000000,而Vector的長度正好等於20000000,說明ArrayList執行緒不安全,Vector執行緒安全。