Java: Phương thức Collections.synchronizedList() và ví dụ
Phương thức synchronizedList() của lớp java.util.Collections được sử dụng để trả về danh sách được đồng bộ hóa (an toàn theo luồng) được hỗ trợ bởi danh sách đã chỉ định. Để đảm bảo truy cập nối tiếp, điều quan trọng là tất cả quyền truy cập vào danh sách sao lưu phải được thực hiện thông qua danh sách trả về.
Cú pháp:
public static <T> List<T> synchronizedList(List<T> list)
Tham số: Phương thức này nhận danh sách như một tham số được "bao bọc" trong một danh sách được đồng bộ hóa.
Giá trị trả về: Phương thức này trả về một dạng view được đồng bộ hóa của danh sách được chỉ định.
Dưới đây là các ví dụ để minh họa phương thức synchronizedList().
Ví dụ 1:
import java.util.*; public class Test1 { public static void main(String[] argv) throws Exception { try { // Tạo đối tượng List<String> List<String> list = new ArrayList<String>(); // thêm các chuỗi vào list list.add("A"); list.add("B"); list.add("C"); list.add("D"); list.add("E"); // in ra list System.out.println("List : " + list); // tạo một list synchronized List<String> synlist = Collections.synchronizedList(list); // in ra Collection System.out.println("Synchronized list is : " + synlist); } catch (IllegalArgumentException e) { System.out.println("Exception thrown : " + e); } } }
Kết quả:
List: [A, B, C, D, E] Synchronized list is: [A, B, C, D, E]
Ví dụ 2:
import java.util.*; public class Test1 { public static void main(String[] argv) throws Exception { try { // tạo đối tượng List<Integer> List<Integer> list = new ArrayList<Integer>(); // đưa dữ liệu vào list list.add(20); list.add(30); list.add(40); list.add(50); list.add(60); // in ra Collection System.out.println("List : " + list); // tạo list synchronized List<Integer> synlist = Collections.synchronizedList(list); // in ra Collection System.out.println("Synchronized list is : " + synlist); } catch (IllegalArgumentException e) { System.out.println("Exception thrown : " + e); } } }
Kết quả:
List: [20, 30, 40, 50, 60] Synchronized list is: [20, 30, 40, 50, 60]