2012-01-20 11 views
5

मैं जावा संलग्न एपीआई स्थानीय JVMs से कनेक्ट करने का उपयोग कर रहा हूँ। मैं निम्नलिखितजावा VirtualMachine.getSystemProperties() गतिरोध

VirtualMachine vm = VirtualMachine.attach("8400"); 
Properties props = vm.getSystemProperties(); 

एक विंडोज़ मशीन पर चल की तरह कुछ कर रहा हूँ, अगर VirtualMachine मैं से कनेक्ट कर रहा हूँ के बीच बंद है देते हैं और getSystemProperties कॉल, getSystemProperties() हमेशा के लिए ब्लॉक और है कि सूत्र में एक गतिरोध पैदा करेगा। मैंने ब्लॉक को WindowsVirtualMachine.connectPipe() पर खोज लिया है। यह एक मूल विधि है, इसलिए WindowsVirtualMachine.c कनेक्टपिप फ़ंक्शन में ConnectNamedPipe पर एक कॉल है। मैंने विंडोज मशीनों पर Connect नामांकित पाइप डेडलॉकिंग के बारे में कुछ पोस्ट देखी हैं। मैंने अवरुद्ध थ्रेड को बाधित करने का प्रयास किया है, लेकिन यह थ्रेड को अनब्लॉक नहीं करता है।

मैं काफी यकीन है कि क्या वैकल्पिक हल इस बात के लिए है नहीं कर रहा हूँ, लेकिन मैं संलग्न एपीआई का उपयोग नहीं (हालांकि मैं अपने मौजूदा समाधान के साथ रहना पसंद करते हैं) पर विचार करेंगे। मैं स्थानीय मशीन पर चल रहे JVMs प्राप्त करने के लिए VirtualMachine.list() का उपयोग करने के लिए अटैच एपीआई का उपयोग कर रहा हूं। और फिर वहां से मैं सिस्टम गुण प्राप्त करने और जेएमएक्स के माध्यम से उनसे जुड़ने के लिए इसका उपयोग कर रहा हूं। मुझे पता है कि मैं संभवतः नेटवर्क पर प्रक्रियाओं के बीच संवाद करने के लिए लाइब्रेरी का उपयोग करके एक कस्टम समाधान बना सकता हूं, लेकिन मैं प्रक्रियाओं के बीच ओएस स्तर संचार का उपयोग करना चाहता हूं, जो मुझे लगता है कि अटैच एपीआई का उपयोग कर रहा है।

तो मेरे सवाल का मेरे जारी करने के लिए किसी भी कामकाज से जुड़े हैं है? या क्या कोई पुस्तकालय है जो मुझे VirtualMachine.list() के समान कार्यक्षमता दे सकता है?

+0

क्या आप दखल धागा काम नहीं करता है मतलब है? यह कुछ नहीं करता है? – Adrian

+0

अवरुद्ध थ्रेड को बाधित करने से इसे अनवरोधित नहीं किया जाता है। – mikey

+1

थ्रेड() थ्रेड को रोकने का प्रयास करें (जो बीटीडब्ल्यू एक बुरा विचार है, लेकिन देखें कि यह कैसा व्यवहार करता है)। इंटरप्ट के लिए दस्तावेज़ यहां दिया गया है: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.html#interrupt%28%29 – Adrian

उत्तर

0

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

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