2011-08-17 26 views
11

Lớp Android mới có an toàn không? Tài liệu java nói:An toàn chủ đề Android LruCache (Android 3.1)

Lớp này an toàn chỉ. Thực hiện nhiều hoạt động bộ nhớ cache nguyên tử bằng cách đồng bộ hóa trên bộ nhớ cache:

synchronized (cache) { 
    if (cache.get(key) == null) { 
     cache.put(key, value); 

    }} 

Họ có nghĩa là để nói KHÔNG thread-safe? Tại sao người ta phải đồng bộ hóa nếu lớp là chủ đề an toàn?

Cảm ơn!

Trả lời

17

Không quan trọng lớp học có an toàn hay không. Nếu bạn sử dụng nhiều thao tác, bạn vẫn có thể cần đồng bộ hóa. Phụ thuộc vào cách bạn sử dụng nó.

if (cache.get(key) == null) 
{ 
    //at this point you think there is no such value in the cache 
    //but another thread might have just added one between executing 
    //those two lines of code 
    cache.put(key, value); 
}