- Tại sao sử dụng bộ sưu tập đồng thời trên bộ sưu tập được đồng bộ hóa?
Vì bộ sưu tập synchronized
chỉ bảo vệ dữ liệu khỏi bị hỏng do truy cập đồng thời. Điều này không có nghĩa là các bộ sưu tập synchronized
được tối ưu hóa để truy cập đồng thời. Thực tế, nó là một cơ chế tốt hơn cho compareAndSet
hơn là khóa toàn bộ Map
để đọc.
- Khi nào các lớp nguyên tử được ưu tiên hơn khóa rõ ràng?
Các lớp AtomicInteger
và AtomicLong
phải luôn được sử dụng (theo ý kiến) qua khóa bằng tay với nguyên thủy vì chúng ngắn gọn hơn. Xem xét:
synchronized (lock) {
int old = counter;
counter++;
return old;
}
Khi so sánh với:
int old = counter.getAndIncrement();
tôi phải nói mặc dù, rằng các lớp học bị họ thiếu waitability. Ví dụ, bạn thường muốn một số boolean được đồng bộ hóa, nơi bạn wait
về điều kiện boolean. Chúng có sẵn là WaitableBoolean
trong thư viện đồng thời Doug Lea cũ nhưng chúng đã bị bỏ trong j.u.c
, tôi không chắc chắn tại sao.
- Khi nào Khóa nên được sử dụng khi đồng bộ hóa?
Đây là câu hỏi phức tạp hơn vì việc sử dụng Locks
mang một số chi phí. Trên thực tế, người ta thường nói rằng không có pint khi sử dụng một trường hợp ReadWriteLock
trong điển hình là. Một trường hợp nơi khóa phải được sử dụng là nơi khóa tài nguyên và mở khóa tài nguyên không thể được thực hiện trong cùng phạm vi từ vựng. synchronized
là bất lực để giúp đỡ trong các trường hợp như vậy.
- Các lựa chọn thay thế để chờ() và thông báo(), thông báoAll() là gì?
await
, signal
và signalAll
- Khi một CompletionService nên được sử dụng?
Một dịch vụ hoàn rất hữu ích trong trường hợp việc tiêu thụ một kết quả của một tính toán không cần phải được truy cập tại điểm tính toán đã được gửi nhưng nơi điều quan trọng là rằng khi hoàn thành việc tính toán (hoặc kết quả của nó, hoặc thành công) được chương trình của bạn biết đến. Điều này có thể là, ví dụ, để theo dõi tỷ lệ các nhiệm vụ thất bại (mà đã ném ngoại lệ), hoặc nó có thể là để dọn dẹp tài nguyên.
Nguồn
2009-09-04 06:35:34
Điều này nghe giống như các câu hỏi về bài tập về nhà. –
Không thực sự :) Chỉ cần tham khảo nhanh để chọn công cụ chính xác cho công việc. – parkr
Vì vậy, bạn đã đọc sách và vẫn có những câu hỏi này? – pek