2012-09-10 25 views
7

मैं अपेक्षाकृत नया जावा हूं।जावा में java.util.concurrent.atomic पैकेज में कक्षाओं का सटीक उपयोग क्या है?

java.util.concurrent.atomic

मैं इस पैकेज के लिए जावाडोक को समझने के लिए रास्ते का अनुमान प्राप्त करने की कोशिश: मैं समझता हूँ कि क्या पैकेज में कक्षाओं का उपयोग कर रहे हैं कोशिश कर रहा हूँ। लेकिन जब मुझे इन वर्गों का उपयोग करना चाहिए तो वास्तव में इससे कोई समझ नहीं आ सकती थी। क्या कोई सरल शब्दों में उदाहरण और अधिक विवरण दे सकता है? thx

+5

आप क्या समझ नहीं पाए? – SLaks

+0

"सिंक्रनाइज़ेशन का उपयोग किये बिना थ्रेड हस्तक्षेप को रोकें" http://docs.oracle.com/javase/tutorial/essential/concurrency/atomicvars.html – km1

+1

http://www.amazon.com/Java-Concurrency- अभ्यास- ब्रायन- गोएट्ज़/डीपी/0321349601 – SLaks

उत्तर

11

विचार करें कि 10 धागे int i (increedized 0) बढ़ रहे हैं और कंसोल मान को आउटपुट कर रहे हैं। आप कुछ इस तरह प्राप्त कर सकते हैं:

1 
2 
2 
3 
3 
5 
6 
6 
8 
10 

AtomicInteger, उदाहरण के लिए, सुनिश्चित करता है कि प्रत्येक थ्रेड को बढ़ा या मूल्य atomically घटती, सुनिश्चित करना है कि लिखने आपरेशन एक तुल्यकालन ढंग से होता है सकते हैं, और 10 धागे के लिए, आउटपुट हमेशा होगा:

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

आप अपने पहले उदाहरण में 3 से 5 तक और 6 से 8 तक क्यों जाते हैं? 2 धागे एक ही समय में एक मूल्य नहीं पढ़ना चाहिए और एक ही मूल्य लिखना चाहिए? – Pavel