Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

คลาส Collection ใดที่ Thread-Safe ใน Java

Thread-safe คลาสที่รับประกันสถานะภายในและค่าที่คืนจากเมธอดถูกต้องเมื่อเรียกพร้อมกันจากหลาย Thread คลาส Collection ที่ Thread-safe ใน Java: Stack, Vector, Properties, Hashtable

1. Stack

นำโครงสร้างข้อมูล Stack (LIFO) ไปใช้ รองรับ push, pop, peek, search, empty


import java.util.*;

public class StackTest {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();
        stack.push(5); stack.push(7); stack.push(9);
        Integer n1 = stack.pop();  // 9
        System.out.println("Popped: " + n1);
        Integer n2 = stack.peek(); // 7
        System.out.println("Top: " + n2);
    }
}
Popped: 9
Top: 7

2. Vector

อาร์เรย์ขยายได้อัตโนมัติ รองรับ add(), remove(), get(), elementAt(), size()


import java.util.*;

public class VectorTest {
    public static void main(String[] args) {
        Vector<Object> vector = new Vector<>();
        vector.add(9); vector.add(3); vector.add("ABC");
        vector.add(1); vector.add("DEF");
        System.out.println("Vector: " + vector);
        vector.remove(1);
        System.out.println("After remove: " + vector);
    }
}
Vector: [9, 3, ABC, 1, DEF]
After remove: [9, ABC, 1, DEF]

หมายเหตุ: Vector และ Hashtable เป็น Legacy Classes ใหม่แนะนำใช้ Collections.synchronizedList/Map หรือ ConcurrentHashMap, CopyOnWriteArrayList จาก java.util.concurrent แทน