जब तक आप नहीं करते हैं System.setOut
के माध्यम से बदलें यह धागा सुरक्षित है।
हालांकि यह सुरक्षित थ्रेड है आप कई धागे System.out
ऐसी है कि
Thread-1
System.out.println("A");
System.out.println("B");
System.out.println("C");
Thread-2
System.out.println("1");
System.out.println("2");
System.out.println("3");
के लिए लिख अन्य संयोजन के बीच
1
2
A
3
B
C
पढ़ सकते हैं हो सकता है। यह OutputStream
उदाहरण पर एक ताला प्राप्त कर लेता है - - यह तो बफर और तुरंत फ्लश करने के लिए लिखेंगे
जब आप System.out
पर लिखें:
तो अपने सवाल का जवाब देने।
एक बार जब यह अवरोध समाप्त, OutputStream
प्लावित और करने के लिए लिखा है। ऐसा कोई उदाहरण नहीं होगा जहां आपके पास 1A 2B
जैसे विभिन्न स्ट्रिंग शामिल होंगी।
कि System.out.println
साथ नहीं होगा: अपना संपादन जवाब देने के लिए
संपादित करें। चूंकि PrintStream
पूरे समारोह सिंक्रनाइज़ करता है, यह बफर भर जाएगा और फिर इसे atomically फ्लश। आने वाले किसी भी नए धागे के साथ काम करने के लिए अब एक नया बफर होगा।
स्रोत
2012-02-27 03:37:29
हमेशा पहले। लेकिन @ जॉन विंट के जवाब को पढ़ें, क्योंकि आप शायद कंसोल पर तारों को फेंकना नहीं चाहते हैं। – parkovski
ध्यान रखें कि यहां तक कि यदि System.out.println और System.err.println दोनों सिंक्रनाइज़ किए गए हैं, तो इन दोनों को अपने बीच सिंक्रनाइज़ नहीं किया गया है, इसलिए System.err.println आपको System.out.println के साथ इंटरलव कर सकता है जो आपको कंसोल दे सकता है आप क्या उम्मीद करते हो। – Pacerier
असल में मैं अक्सर इंटेलिज आइडिया और एक्लिप्स में इंटरलीव आउटपुट (आपका प्रदर्शन केस 2) प्राप्त करता हूं, अन्य लोग आपको क्या बता रहे हैं (jdk 1.6)। – mucaho