2010-09-03 7 views
8

से पढ़ने का प्रयास किया ठीक है, मैं जावा में समेकन के लिए केवल नया नहीं हूं बल्कि जावा प्रोग्रामिंग के लिए बिल्कुल नया हूं। मैंने जावा ट्यूटोरियल से समेकन को समझने की कोशिश की, अभ्यास में Concurrency पढ़ने की कोशिश की लेकिन यह बहुत अग्रिम लग रहा था, इसलिए कुछ अन्य किताबों से पढ़ने की कोशिश की: एससीजेपी एक व्यापक, जावा प्रोग्रामिंग भाषा चौथा संस्करण।
ऐसा लगता है कि ऐसी चीजें हैं जो सिर्फ जोड़ या समझ में नहीं आती हैं, इसलिए मैं समझ नहीं पा रहा हूं कि क्यों और कैसे और वैचारिक समझ के सही पैटर्न को बनाते हैं। व्यर्थता में इस अभ्यास का वर्णन करने के लिए मैं क्षमा चाहता हूं। लेकिन क्या कोई जावा में समवर्ती सीखने के लिए अच्छी पढ़ने वाली सामग्री और/या तरीकों की सिफारिश कर सकता है।जावा में समरूपता के आसपास अपना सिर नहीं मिल सकता है, अनुशंसित पुस्तकें

+1

पहले समवर्ती थ्रेडिंग की मूल बातें जानें (सी में 'phtreads' और' कांटा ') – alternative

उत्तर

7

लेकिन यह भी जावा प्रोग्रामिंग करने के लिए काफी नया हूँ

छोड़ दो कुछ महीनों के लिए समेकन पुस्तक अलग-अलग और मूल जावा/एससीजेपी पुस्तक और अभ्यास पढ़ने के साथ आगे बढ़ें मूल जावा बहुत बर्फ है। पुस्तक के निर्देशों के अनुसार अब और फिर Thread या Runnable बनाएं। कुछ महीनों तक इसके साथ खेलें जब तक कि आप उस पर अच्छी समझ न लें। फिर समवर्ती पुस्तक के साथ जारी रखें।

दौड़ने से पहले चलना सीखें, अन्यथा आप दौड़ने की बजाय क्रॉलिंग कर रहे हैं।

+1

मुझे दौड़ने से पहले चलने से सहमत होना है, लेकिन जब आप जावा की मूल बातें पर किताबें पढ़ लेते हैं तो अगली पुस्तक जिसे आप पढ़ते हैं, जोश ब्लोच द्वारा "प्रभावी जावा" होना चाहिए। उसके बाद, यदि आपको अभी भी यह नहीं मिलता है, तो सिंक्रनाइज़ करने के साथ सरल कतार और कार्यकर्ता उदाहरणों को आजमाएं। –

+1

"कुछ महीने" ईमानदारी से बहुत आशावादी कहा जाता है। लेकिन अगर आपके पास प्रेरणा है ... – BalusC

+0

होर्स्टमान और कॉर्नेल द्वारा कोर जावा भी अच्छा है और अंत में कवरेज j.u.concurrent है –

3

यह एक कठिन विषय है, किसी को भी इसका पूरा ज्ञान नहीं है, यहां तक ​​कि इसे डिजाइन करने वाले भी नहीं।

कई लोग केवल इसके उप-समूह को समझते हैं। यदि आपको केवल कुछ चाल/पैटर्न पता हैं जिन्हें आप अपने कार्यक्रमों में विश्वास के साथ उपयोग कर सकते हैं, तो यह काफी अच्छा है। वहां से आप अधिक से अधिक जमा करते हैं।

एक नौसिखिया केवल यह जान सकता है कि वह तरीकों से 'सिंक्रनाइज़' कीवर्ड जोड़ सकता है। आश्चर्यजनक रूप से बहुत सारी समस्याएं हल हुईं और ठीक काम करती हैं, भले ही उन्हें पता न हो कि वह क्या कर रहा है।

7

ऐसा लगता है जैसे आप जल्द ही जावा समरूपता पर परीक्षण (कक्षा? प्रमाणीकरण?) "परीक्षण करेंगे। आपने स्वाभाविक रूप से किसी समस्या में दौड़ने के चक्र का अनुभव नहीं किया है, इसे हल करने के तरीके के बारे में सोचते हुए, और समाधान के लिए सहमति प्रदान की है। यदि यह मामला है ...

(1) अपने दिमाग को दोष न दें। इसके बजाय, एक कदम वापस लें और आपकी रुचि रखने वाली समस्याओं के बारे में सोचना शुरू करें। इन्हे लिख लीजिये। इंटरनेट एप्लिकेशन शुरू करने के लिए एक अच्छी जगह है। उदाहरण के लिए - किसी प्रकार का इंटरनेट सर्वर लिखना जो गेम सर्वर की तरह विभिन्न उपयोगकर्ताओं से कई कनेक्शन संभाल सकता है। या, एक स्टॉक ट्रेडिंग प्रोग्राम जो ब्रोकर से प्रोसेसिंग जानकारी के रूप में आपके रोबोट के आदेशों को एक ही समय में संभालना है।

(2) समरूपता सोचें। अब आपको एक ऐसी समस्या है जो आपकी रूचि रखती है, और बहु-कार्यशीलता के रूप में समरूपता के बारे में सोचने के लिए, कलाकारों/कार्यक्रमों का एक चित्र खींचता है जिसमें तीरों के साथ एक दूसरे के साथ संवाद करने की आवश्यकता होती है। एक डमी-कंकाल कोड स्केच करें। आप वास्तव में एक गेम सर्वर लिखने के लिए नहीं जा रहे हैं; लेकिन आप connectToGame(){}

(3) अब आप तैयार हैं, सरल, खाली सदस्य कार्यों के साथ सरल कंकाल क्लास लाइब्रेरी बना सकते हैं। एक हैलो-वर्ल्ड थ्रेड उदाहरण या दो चलाएं।अपनी किताबों के माध्यम से फ़्लिप करें या जावाडॉक्स ब्राउज़ करें और उपलब्ध विभिन्न समवर्ती संरचनाओं को देखें। इस बारे में सोचें कि आप अपनी समस्या पर कौन से आवेदन कर सकते हैं। "सही विकल्प" बनाने के बारे में चिंता न करें। आपको जल्द ही पता चल जाएगा कि क्या आपके पास कुछ ऐसा काम है जो काम करता है।

(4) परीक्षण और त्रुटि को गले लगाओ। इसके लिए एक और शब्द है: सीखना!

अब, आपको ऐसा करने के कुछ अनुभव मिलने के बाद, आप जावा कॉन्सुरेंसी बुक लेने और किसी और की समस्या पढ़ने में सक्षम होंगे।

वहां रुको और हार न दें।

1

मुझे लगता है कि मैं समवर्ती पिछड़ा और आगे समझता हूं। हाल ही में, मैंने अपने कार्यालय में शेल्फ से एक किताब पकड़ ली और पाया कि यह बहुत अच्छा था। न केवल समेकन पर, यह पूरी तरह से जावा का बड़ा कवरेज देता है।

Introduction to Java Programming, Eighth Edition: Comprehensive Version, Y. Daniel Liang

हालांकि, मेरी समझ से ज्यादातर, कोड के साथ काम कर समस्याओं से निपटने, और उदाहरण की कोशिश कर अनुभव से आया है। जब तक मैंने ऐसा नहीं किया तब तक मैंने वास्तव में थ्रेडिंग को कभी नहीं समझा।

Concurrency जटिल है और अधिकांश लोग इसे पढ़ने से नहीं प्राप्त करेंगे। एपीआई को देखें और चीजों को आजमाने के लिए कुछ टेस्ट प्रोग्राम लिखें। जो भी पुस्तक आप चुनते हैं, कोड को न पढ़ने की कोशिश करें, इसे लिखें और इसे चलाएं। एक या दो दिन बाद, इसके साथ काम करते हुए, आप इसे अधिकतर समझ लेंगे।

2

मेरे दो सेंट मूल्य जोड़ने के लिए: किसी भी विशेष भाषा में वास्तव में इसका उपयोग करने के machanics के बजाय, पहले concurrency की अवधारणाओं को सीखने पर ध्यान केंद्रित करें। यदि आप भाषा संरचनाओं में उलझ जाते हैं तो यह विषय की उच्च-स्तरीय समझ प्राप्त करने के लिए इतना कठिन होगा।

यह अंत करने के

मैं कैसे Carriero & Gelernter (मुक्त & कानूनी PDF download) द्वारा समानांतर कार्यक्रम लिखें की सिफारिश करेंगे। यह अवधारणाओं का वर्णन करने और ठोस कोड उदाहरण प्रदान करने के बीच एक अच्छा संतुलन है, और सिद्धांत में उलझन में नहीं आता है। यह वास्तव में बहुत पठनीय और मनोरंजक है (या हो सकता है कि यह सिर्फ मुझे हो)।

संबंधित मुद्दे