मैं किसी प्रक्रिया के आउटपुट और त्रुटि स्ट्रीम से पढ़ना चाहता हूं और उन्हें टेक्स्ट की एक स्ट्रीम में विलय करना चाहता हूं। मेरे कार्यक्रम ग्रूवी में है और इस तरह पढ़ता है:थ्रेड-सुरक्षित ByteArrayOutputStream क्या है?
def mergeStream = new ByteArrayOutputStream()
process.waitForProcessOutput(mergeStream, mergeStream)
समस्या यह है कि ByteArrayOutputStream सुरक्षित और waitForProcessOutput थ्रेड नहीं है() दो धागे जो mergeStream को संलग्न उत्पन्न करता है। क्या कोई थ्रेड-सुरक्षित संस्करण है जिसका मैं उपयोग कर सकता हूं? आप और कैसे सलाह देते हैं कि मैं मर्जस्ट्रीम तक पहुंच नियंत्रित करता हूं? ऐसा लगता है कि अभ्यास के पात्रों को कभी-कभी इस कार्यान्वयन के साथ गिरा दिया जाता है।
क्या आपने प्रोसेसबिल्डर के रीडायरेक्ट एररस्ट्रीम को माना है? – artbristol
हां यह * थ्रेड सुरक्षित है, या इसके सभी तरीकों को सिंक्रनाइज़ किया गया है, और 'ProcessBuilder.redirectErrorStream()' आपका पूरा प्रश्न अनावश्यक बनाता है। असली सवाल नहीं है। – EJP
@EJP - यदि आप उत्तर जानते हैं तो यह केवल "असली सवाल नहीं है" - अन्यथा, यह एक महान सवाल है! जावाडोक इसके बारे में कुछ भी नहीं सिंक्रनाइज़ किया गया है - AFAICT, आपको यह पता लगाने के लिए स्रोत में खोदना होगा, और मुझे कभी परेशान नहीं होगा (माना जाता है कि यह थ्रेडसेफ नहीं था, क्योंकि डॉक्टर ने कुछ भी नहीं कहा था) क्या आपने टिप्पणी नहीं की थी। –