2012-09-10 22 views
7

Tôi tương đối mới java. Tôi đang cố gắng hiểu cách sử dụng các lớp trong gói là gì:Việc sử dụng chính xác các lớp trong gói java.util.concurrent.atomic trong Java là gì?

java.util.concurrent.atomic

Tôi cố gắng để hiểu được Javadoc cho gói này để có được một nắm bắt nó. Nhưng không thể thực sự có ý nghĩa gì khi tôi nên sử dụng những lớp này. Ai đó có thể đưa ra các ví dụ và mô tả chi tiết hơn bằng những từ đơn giản không? thx

+5

Bạn không thể hiểu được điều gì? – SLaks

+0

"ngăn chặn sự can thiệp của chủ đề mà không cần phải đồng bộ hóa" http://docs.oracle.com/javase/tutorial/essential/concurrency/atomicvars.html – km1

+1

http://www.amazon.com/Java-Concurrency-Practice-Brian- Goetz/dp/0321349601 – SLaks

Trả lời

11

Hãy xem xét 10 luồng đang tăng int i (khởi tạo tại 0) và xuất ra giá trị của bảng điều khiển. Bạn có thể nhận được một cái gì đó như thế này:

1 
2 
2 
3 
3 
5 
6 
6 
8 
10 

AtomicInteger, ví dụ, đảm bảo rằng mỗi chủ đề có thể tăng hoặc giảm các giá trị nguyên tử, đảm bảo rằng các hoạt động viết xảy ra một cách đồng bộ, và trong 10 chủ đề, các đầu ra sẽ luôn là:

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
+0

Tại sao bạn bỏ qua từ 3 đến 5 và từ 6 đến 8 trong ví dụ đầu tiên của bạn? Không nên 2 chủ đề đọc một giá trị cùng một lúc và viết cùng một giá trị? – Pavel

Các vấn đề liên quan