Chúng ta có thể sử dụng hashmap trong môi trường đa luồng không?

Chúng ta có thể sử dụng hashmap trong môi trường đa luồng không?
Chúng ta có thể sử dụng hashmap trong môi trường đa luồng không?
Anonim

Có vấn đề gì khi sử dụng HashMap trong môi trường đa luồng? …Sẽ là một vấn đề nếu nhiều luồng đang thêm vào cùng một phiên bản HashMap mà khôngnó được đồng bộ hóa. Ngay cả khi chỉ 1 luồng đang sửa đổi HashMap và các luồng khác đang đọc từ chính bản đồ đó mà không đồng bộ hóa, bạn sẽ gặp sự cố.

Bạn có thể sử dụng HashMap trong môi trường đa luồng không?

Bạn phải đảm bảo rằng: Tất cả các cập nhật cho HashMap đều được hoàn tất trước khi các luồng được khởi tạo và luồng tạo ra bản đồ cũng chia các luồng. Các chủ đề chỉ sử dụngHashMap ở chế độ chỉ đọc- lấy hoặc lặp mà không xóa. Không có chủ đề nào cập nhật bản đồ.

Tại sao HashMap không nên được sử dụng trong môi trường đa luồng, nó cũng có thể gây ra vòng lặp vô hạn?

Dung lượng mặc định của HashMap là 16 và Hệ số tải là 0,75, có nghĩa là HashMap sẽ tăng gấp đôi dung lượng khi cặp Khóa-Giá trị thứ 12 xuất hiện trong bản đồ (160,75=12). Khi 2 luồng cố gắng truy cập HashMap đồng thời, thì bạn có thể gặp phải vòng lặp vô hạn. Luồng 1 và Luồng 2 cố gắng đặt cặp khóa-giá trị thứ 12.

HashMap lấy chuỗi có an toàn không?

HashMap không được đồng bộ hóa. Nó không an toàn cho chuỗivà không thể được chia sẻ giữa nhiều chuỗi mà không có mã đồng bộ hóa thích hợp trong khi Hashtable được đồng bộ hóa.

Điều gì phù hợp nhất với đa luồngmôi trường?

Câu trả lời là " ConcurrentHashMap"

Đề xuất: