2012-04-28 11 views
7

जावा समेकन में, क्या थ्रेड बनाता है "सक्रिय"? सिर्फ यह तथ्य कि यह निष्क्रिय नहीं है? क्या "प्रतीक्षा" या "निलंबित" धागा अभी भी तकनीकी रूप से सक्रिय है?क्या "सक्रिय" धागा परिभाषित करता है?

+2

संदर्भ "सक्रिय" कहां है? इतनी छोटी जानकारी के साथ एक कठिन परिभाषा प्रदान करने के लिए यह एक सामान्य शब्द है। –

+0

"आमतौर पर प्रति कोर 4 - 20 सक्रिय थ्रेड होने के लिए स्वीकार्य है"। – IAmYourFaja

+0

एक सक्रिय 'जावा' थ्रेड एक थ्रेड है जो * योग्य * निष्पादन का वर्तमान चल रहा थ्रेड होने के लिए है। यह एक धागा है जिसने "नया" राज्य छोड़ा है और "चलने योग्य" राज्य प्राप्त कर लिया है (या पुनः प्राप्त) है। सक्रिय थ्रेड रननेबल थ्रेड पूल में रेजीडेंसी लेते हैं। संदर्भ संवेदनशील शब्द * सक्रिय * के लिए यह एक आम गलती है जिसे "वर्तमान में चल रहे चलने योग्य थ्रेड" के रूप में लिया जाना है। – 8bitjunkie

उत्तर

5

मैं क्या अवधि 'सक्रिय' बता सकते हैं एक बहुत इस्तेमाल किया जा रहा है, लेकिन कभी परिभाषित नहीं लगता है।

प्रतियां निर्दिष्ट सरणी में इस सूत्र समूह और इसके उपसमूहों में हर सक्रिय धागा: ThreadGroup.enumerate() विधि से प्रलेखित है।

और looking at the source for this से, यह Thread.isAlive() विधि जाँच और गणनीय करने के लिए उन जोड़ रहा है। इस से मैं अनुमान है कि शब्दों के रूप में 'सक्रिय' और 'जिंदा' कर रहे हैं विनिमेय और 'जिंदा' परिभाषित किया गया है: एक धागा

जिंदा है अगर यह शुरू कर दिया गया है और अभी तक ख़त्म नहीं हुई है।

1

इस संदर्भ में मैं ले "सक्रिय" का मतलब है कि वे कोड को क्रियान्वित कर रहे हैं। निष्क्रिय धागे - जो I/O कॉल पर अवरुद्ध हैं या ताले का इंतजार कर रहे हैं - सीपीयू को प्रभावित किए बिना केवल स्मृति संसाधनों का उपभोग करें (या केवल मामूली)।

हालांकि, यह वास्तव में अपने धागे क्या कर रहे हैं पर निर्भर करता है। यदि प्रत्येक धागा प्राइम की गणना करने के लिए संख्याओं पर पुनरावृत्ति कर रहा है, तो वे पूरी तरह से सीपीयू-बाध्य हैं, और आपको वास्तव में थ्रुपुट को अधिकतम करने के लिए केवल एक कोर होना चाहिए। अगर वे HTTP अनुरोध कर रहे हैं या फ़ाइल I/O निष्पादित कर रहे हैं, तो आप प्रति कोर कुछ खर्च कर सकते हैं।

अंत में, वे क्या कर रहे हैं के लिए संबंध के बिना सामान्य रूप से सभी धागे को कवर एक कंबल बयान बहुत बेकार है।

मैं अत्यधिक समवर्ती जावा प्रोग्रामिंग के विषय का एक उच्च गुणवत्ता वाले इलाज के लिए पुस्तक Java Concurrency in Practice सलाह देते हैं।

0

शब्द "सक्रिय" का उपयोग यहां सामान्य अंग्रेजी अर्थ में किया जा रहा है।

शब्द सक्रिय "कुछ कर रही" है एक सामान्य अंग्रेजी अर्थ। तो धागे के लिए "सक्रिय" का एक सहज अर्थ यह है कि वे वास्तव में निष्पादित कर रहे हैं या निष्पादित करने के लिए तैयार हैं।

इस उद्धरण के संदर्भ में:

"यह आम तौर पर स्वीकार्य है 4 के लिए - प्रति कोर 20 सक्रिय धागे"

शब्द "सक्रिय" इस के साथ लगातार प्रयोग किया जाता है , हालांकि मैं संख्याओं के साथ quibble होगा। (20 बल्कि बहुत अधिक है, आईएमओ)।

हालांकि, मैं तर्क दूंगा कि यह जानबूझकर अस्पष्ट बयान है। देने के रास्ते वेज़ेल वाक्यांश का उपयोग करते हैं "इसे आम तौर पर स्वीकार किया जाता है" (किसी विशिष्ट स्रोत का हवाला देने के बजाए) और विस्तृत श्रृंखला ("4 - 20")। इस प्रकार, आप इस मामले को बना सकते हैं कि "सक्रिय" शब्द जानबूझकर अस्पष्टता का एक और उदाहरण है।

आईएमओ, उद्धरण के लेखक सामान्य बिंदु बनाने की कोशिश कर रहे हैं कि "बहुत सारे धागे खराब हैं" ... "बहुत अधिक" के बारे में सटीक होने के बिना। "सक्रिय" द्वारा उसका अर्थ क्या है, उसे कम करके अधिक सटीक मार्गदर्शन निकालना व्यर्थ है।(और स्पष्ट होना, यह संभव नहीं कहने के लिए कितने "भी कई" है ... सामान्य रूप में है।)

1

java.lang.Thread.State

पर एक नज़र अन्य गैर में ले लो जावा सिस्टम, सक्रिय "रननेबल" के बराबर है। एक कार्य/प्रक्रिया/थ्रेड सक्रिय है यदि यह सक्रिय रूप से कोड चलाने में सक्षम है। अगर यह नहीं है (अवरुद्ध, आदि)

स्टीफन सी ने कहा, सक्रिय रूप से अंग्रेजी के रूप में सक्रिय रूप से जावा के रूप में उपयोग किया जा रहा है।

0

"आमतौर पर प्रति कोर 4 - 20 सक्रिय थ्रेड होने के लिए स्वीकार्य है"। - एडम टैनन

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

+0

http://stackoverflow.com/questions/3275210/what-is-the-thread-state-of-a-thread-after-thread-yield – andersoj

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