2012-09-10 17 views
7

Nispeten yeni bir java.Java'da java.util.concurrent.atomic paketinde sınıfların tam kullanımı nedir?

java.util.concurrent.atomic bundan kavramayaçalıştım bu paket için javadoc anlamaya çalıştım: Ben paketteki sınıfların kullanımı ne olduğunu anlamak çalışıyorum. Ama bu sınıfları kullanmam gerektiğinde gerçekten bir anlam ifade edemezdi. Birisi basit kelimelerle örnekler ve daha fazla açıklama verebilir mi? thx

+5

Ne anlayamadınız? – SLaks

+0

http://docs.oracle.com/javase/tutorial/essential/concurrency/atomicvars.html – km1

+1

http://www.amazon.com/Java-Concurrency-Practice-Brian- "senkronizasyon başvurmadan iplik etkileşimi önlemek" Goetz/dp/0321349601 – SLaks

cevap

11

10 iş parçacığı int i (0 olarak başlatılmış) ve konsolun değeri çıktısını düşünün. Böyle bir şey elde edebilirsiniz:

1 
2 
2 
3 
3 
5 
6 
6 
8 
10 

AtomicInteger, örneğin, her iş parçacığı artırır veya yazma işlemi senkronize bir şekilde olur sağlanması, değerini atomik eksiltme ve güvence altına 10 iş parçacığı için, çıktı her zaman:

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

İlk örneğinizde neden 3'ten 5'e ve 6'dan 8'e kadar atlıyorsunuz? 2 iş parçacığı aynı anda bir değer okumalı ve aynı değeri yazmamalıdır mı? – Pavel