2009-06-10 13 views
7

जावा मूल धागे का उपयोग कर, कौन सा प्रोसेसर (या तो एक सिस्टम या मल्टीप्ली सिस्टम पर) आपका धागा चल रहा है, यह जानने का कोई तरीका है? यदि नहीं, क्या कोई पुस्तकालय है जो मदद कर सकता है?जावा थ्रेड किस प्रोसेसर पर चल रहा है?

+1

आपके सभी उत्तरों के लिए धन्यवाद दोस्तों। मैं समझता हूं कि थ्रेड के सीपीयू उपयोग के बारे में मुझे और अधिक चिंतित होना चाहिए। यह जिज्ञासा से पूछे जाने वाले एक प्रश्न थे :) –

उत्तर

0

मैंने कभी इस तरह के कॉल के बारे में नहीं सुना है, और मुझे संदेह है कि एक ऐसा है, क्योंकि यह वास्तव में आवश्यक नहीं है, और अतिरिक्त प्लेटफॉर्म-विशिष्ट कोड की आवश्यकता होगी।

2

जेवीएम का थ्रेड शेड्यूलर जेवीएम-विशिष्ट है, इसलिए कोई 'सार्वभौमिक' समाधान नहीं है। जहां तक ​​मुझे पता है कि बॉक्स के बाहर कुछ भी उपलब्ध नहीं है, लेकिन शायद इसका उपयोग कर रहा है:

  • सूर्य जेवीएम;
  • सोलारिस - या मैक, के रूप में टॉम हौटिन - tackline अंक बाहर;
  • DTrace

आप कुछ भाग्य हो सकता है:

  • ट्रेस एक thread-start जांच, जो args[3] के रूप में है
  • "देशी/ओएस थ्रेड ID इस आईडी को होस्ट ऑपरेटिंग सिस्टम द्वारा आवंटित है।" सोलारिस-विशिष्ट उपयोगिताओं का उपयोग करते हुए, एक सीपीयू को मूल/ओएस थ्रेड आईडी मानचित्र करें।
+1

डीट्रैक मैक ओएस एक्स पर भी उपलब्ध है (जेआरई समय के पीछे होगा)। –

+0

धन्यवाद, अद्यतन पोस्ट। –

0

जहां तक ​​मुझे पता है कि मानक जेडीके इसका समर्थन नहीं करता है (कम से कम जेडीके 6 तक)। यदि आपको वास्तव में आवश्यकता है, तो आपको शायद जेएनआई का उपयोग करके कुछ मूल कॉल निष्पादित करने की आवश्यकता होगी। एक अच्छा उदाहरण here पाया जा सकता है (जबकि यह बिल्कुल सही नहीं है, मुझे विश्वास है कि यह एक अच्छी शुरुआत है)।

थ्रेडएमएक्सबीन क्लास (जैसे थ्रेड सीपीयू उपयोग प्रति थ्रेड) का उपयोग करके, जेडीके से आपको कई अन्य जानकारी मिल सकती है, और शायद आप there के लिए जो खोज रहे हैं उसे प्राप्त कर सकते हैं।

-1

अमूर्तता की गलत परत।

आपका प्रोग्राम थ्रेड में किए जाने वाले कार्यों को विभाजित करने और शेड्यूलिंग के लिए उन्हें JVM में सबमिट करने के बारे में चिंतित होना चाहिए। यह कैसे (जेवीएम, या अंतर्निहित ऑपरेटिंग सिस्टम, या उस मामले के लिए जो भी) शेड्यूल और कौन सा सीपीयू/कोर आपका धागा चल रहा है, प्रोग्राम डिज़ाइन में एक कारक नहीं होना चाहिए, कम से कम एक पर्यावरण में लिखे गए कार्यक्रम के लिए जावा की तरह

0

ओएस अलग-अलग प्रोसेसर पर विभिन्न समय पर थ्रेड शेड्यूल करेगा। तो अगर आपको किसी भी पल पर प्रत्येक थ्रेड चल रहा है, जहां स्नैपशॉट मिलता है, तो यह मिली-सेकेंड के भीतर पुराना हो सकता है।

आप जिस समस्या को हल करने की कोशिश कर रहे हैं? शायद यह जानने के बिना आप जो चाहते हैं वह कर सकते हैं।

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