2009-12-02 14 views
27

मैं थोड़ी देर के लिए जावा में प्रोग्रामिंग कर रहा हूं (5 साल), और मुझे लगता है कि मुझे भाषा के अधिकांश पहलुओं की अच्छी समझ है। हालांकि, मुझे लगता है कि मैंने धागे के साथ काम नहीं किया है जितना मैं चाहूंगा।जावा थ्रेड सीखने के लिए छोटी परियोजना

जावा धागे को गहराई से सीखने के लिए एक अच्छी छोटी परियोजना क्या होगी?

कोई सिफारिशें?

धन्यवाद

+0

असल में मुझे यह क्वाइट रचनात्मक होने लगता है। संकेत संकेत – Chrips

उत्तर

18

एक ग्राहक सर्वर अनुप्रयोग:

सर्वर एक सॉकेट पर कनेक्शन स्वीकार करता है और प्रत्येक ग्राहक के लिए एक संचार धागा पैदा करते हैं।

यह एक गेम, या एक कार्य प्रबंधक या जो भी आप चाहते हैं हो सकता है।

संपादित करें: मैंने अपनी इंटर्नशिप के दौरान इस तरह एक ईमुले क्लाइंट विकसित किया है, यह करना आसान है, और आप थ्रेड प्रोग्रामेशन के सभी पहलुओं का पता लगा सकते हैं।

+2

+1 - एक क्लासिक परियोजना। आपको नेट पर बहुत सारे स्निपेट, ट्यूटोरियल और सहायता मिलेगी (और एसओ पर)। –

+0

पिछले 2-3 महीनों (पॅकमैन, चेकर्स, टेट्रिस इत्यादि) में कोड किए गए गेम में ऑनलाइन मल्टीप्लेयर सुविधा जोड़ने के लिए एक अच्छा विचार की तरह लगता है। मैं इसे पीएसी-मैन पर करने की कोशिश करूंगा, शायद प्रत्येक भूत के लिए एक खिलाड़ी नियंत्रक? (शायद उबाऊ हो जाएगा, लेकिन कम से कम मैं गहराई से धागे का उपयोग करूंगा) –

+2

कुछ विचार दें कि आप इसकी बहु-थ्रेडनेस का परीक्षण कैसे करेंगे; दूसरे शब्दों में, यह सुनिश्चित कर लें कि आपको यह सही लगे। सर्वर का उपयोग करने के लिए जेएमटर जैसे टूल का उपयोग करने में सक्षम होने से कुछ मुद्दों का पर्दाफाश करने में मदद मिल सकती है। – VoiceOfUnreason

4

एक वेब क्रॉलर लिखें !!

7

Producer/Consumer समस्या को कार्यान्वित करके शुरू करने का एक शानदार तरीका है। यह आपको एकाधिक थ्रेड, सिंक्रनाइज़ेशन, लॉकिंग, और थ्रेड निष्पादन से बाहर निकलने के तरीके से निपटने के साथ सौदा करने देता है। एक बार ऐसा करने के बाद आपको जावा थ्रेडिंग (और सामान्य रूप से थ्रेडिंग) के बारे में अच्छा विचार होना चाहिए।

7

मैंने लिफ्ट सिमुलेशन लिखकर धागे सीखा। प्रत्येक धागा एक इमारत में एक लिफ्ट का प्रतिनिधित्व करने वाली वस्तु है। एक अलग संरचना में "फर्श पर कौन से बटन दबाए गए हैं?"

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

+0

डीटेल और डीटेल पुस्तक में से एक की तरह? –

+0

@ डेविडोब्रल्स: मैंने कभी भी पूरी जावा डीटेल 2 पुस्तक नहीं पढ़ी है, और कई वर्षों से मैंने अपने सी ++ को देखा है, लेकिन हाँ, अगर यह वहां है तो आश्चर्यचकित नहीं होगा। –

8

मैंने पैकमेन का जावा संस्करण लिखा था। प्रत्येक भूत के रूप में, Pacman अपने धागे पर था। PacMan खोजने के लिए प्रत्येक भूत का अपना एल्गोरिदम था।

+1

मैंने एक पीएसी-मैन भी लिखा, लेकिन मैंने थ्रेड का कभी भी उपयोग नहीं किया! पूरे खेल के लिए बस एक। मैं यह देखने की कोशिश करूंगा कि मैं वहां धागे कैसे लगा सकता हूं। –

3

एक त्वरित संदेश प्रणाली विकसित करने का प्रयास करें जहां एकाधिक उपयोगकर्ता एक सर्वर से कनेक्ट होते हैं। exerpt नीचे Dietel और Dietel से लिया जाता है - जावा कैसे 6 संस्करण

चैट रूम्स इंटरनेट पर आम हो गए हैं कार्यक्रम के लिए। वे एक केंद्रीय स्थान प्रदान करते हैं जहां उपयोगकर्ता को छोटे टेक्स्ट संदेशों के माध्यम से एक दूसरे के साथ चैट कर सकते हैं। प्रत्येक प्रतिभागी सभी संदेश देख सकता है जो अन्य उपयोगकर्ता पोस्ट करते हैं, और प्रत्येक उपयोगकर्ता संदेश पोस्ट कर सकता है।

इस अभ्यास के साथ आप परीक्षण के लिए अपने 5 साल का अनुभव डाल सकते हैं क्योंकि इस छोटी परियोजना को केवल मल्टीथ्रेडिंग की आवश्यकता नहीं है, बल्कि नेटवर्किंग और जीयूआई की आवश्यकता है। इसके अलावा आपको मल्टीकास्टिंग नामक तकनीक का उपयोग करने की आवश्यकता है।

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

सभी बेहतरीन!

3

पहले चरण के रूप में, Dining Phisolophers problem को लागू करने पर विचार करें। इससे आपको धागे शुरू करने, विभाजित नौकरियों को परिभाषित करने और धागे के बीच डेटा साझा करने के विभिन्न तरीकों से पेश किया जाएगा।

कई "सही" समाधान और कई और खतरनाक प्रयास हैं। शुरुआती the java.util.concurrent packages खनन शुरू करें। इसे गलत लिखें और इसे सही बनाने के लिए क्या लेता है इसका पता लगाएं।

3

टीसीपी के साथ एक पी 2 पी चैट सॉफ्टवेयर लिखें। आपको जावा नेटवर्किंग कक्षाओं और स्ट्रीम के बारे में भी जानना होगा, लेकिन यह बहुत कठिन नहीं है। और java.net पैकेज सीखना प्रयास के लायक है!

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