Class ThreadLocalPrintStream

  • All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable, java.lang.Appendable, java.lang.AutoCloseable

    class ThreadLocalPrintStream
    extends java.io.PrintStream
    The class name is pretty descriptive. This creates a PrintStream much like a FilterOutputStream, but with the wrapped PrintStream being local to the current Thread. By setting System.out to a ThreadLocalPrintStream, different Threads can write to different PrintStreams simply by using System.out. Of course, the init() method must be called by the Thread that wishes to use the wrapped stream.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.io.PrintStream defaultPrintStream  
      private java.lang.InheritableThreadLocal streams
      The PrintStreams for the various threads
      • Fields inherited from class java.io.FilterOutputStream

        out
    • Constructor Summary

      Constructors 
      Constructor Description
      ThreadLocalPrintStream​(java.io.PrintStream defaultPrintStream)
      Creates a new InheritedThreadLocalPrintStream
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean checkError()  
      void close()  
      void flush()  
      (package private) java.io.PrintStream getPrintStream()
      Returns this thread's PrintStream
      (package private) void init​(java.io.PrintStream streamForCurrentThread)
      Sets the PrintStream for the current thread
      void print​(boolean b)  
      void print​(char c)  
      void print​(char[] s)  
      void print​(double d)  
      void print​(float f)  
      void print​(int i)  
      void print​(long l)  
      void print​(java.lang.Object obj)  
      void print​(java.lang.String s)  
      void println()  
      void println​(boolean x)  
      void println​(char x)  
      void println​(char[] x)  
      void println​(double x)  
      void println​(float x)  
      void println​(int x)  
      void println​(long x)  
      void println​(java.lang.Object x)  
      void println​(java.lang.String x)  
      void write​(byte[] b)  
      void write​(byte[] buf, int off, int len)  
      void write​(int b)  
      • Methods inherited from class java.io.PrintStream

        append, append, append, clearError, format, format, printf, printf, setError
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • streams

        private java.lang.InheritableThreadLocal streams
        The PrintStreams for the various threads
      • defaultPrintStream

        private java.io.PrintStream defaultPrintStream
    • Constructor Detail

      • ThreadLocalPrintStream

        public ThreadLocalPrintStream​(java.io.PrintStream defaultPrintStream)
        Creates a new InheritedThreadLocalPrintStream
        Parameters:
        defaultPrintStream - the PrintStream that will be used if the current thread has not called init()
    • Method Detail

      • init

        void init​(java.io.PrintStream streamForCurrentThread)
        Sets the PrintStream for the current thread
        Parameters:
        streamForCurrentThread - the PrintStream for the current thread
      • getPrintStream

        java.io.PrintStream getPrintStream()
        Returns this thread's PrintStream
        Returns:
        this thread's PrintStream
      • checkError

        public boolean checkError()
        Overrides:
        checkError in class java.io.PrintStream
        See Also:
        PrintStream.checkError()
      • close

        public void close()
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.PrintStream
        See Also:
        PrintStream.close()
      • flush

        public void flush()
        Specified by:
        flush in interface java.io.Flushable
        Overrides:
        flush in class java.io.PrintStream
        See Also:
        PrintStream.flush()
      • print

        public void print​(boolean b)
        Overrides:
        print in class java.io.PrintStream
        See Also:
        PrintStream.print(boolean)
      • print

        public void print​(char c)
        Overrides:
        print in class java.io.PrintStream
        See Also:
        PrintStream.print(char)
      • print

        public void print​(char[] s)
        Overrides:
        print in class java.io.PrintStream
        See Also:
        PrintStream.print(char[])
      • print

        public void print​(double d)
        Overrides:
        print in class java.io.PrintStream
        See Also:
        PrintStream.print(double)
      • print

        public void print​(float f)
        Overrides:
        print in class java.io.PrintStream
        See Also:
        PrintStream.print(float)
      • print

        public void print​(int i)
        Overrides:
        print in class java.io.PrintStream
        See Also:
        PrintStream.print(int)
      • print

        public void print​(long l)
        Overrides:
        print in class java.io.PrintStream
        See Also:
        PrintStream.print(long)
      • print

        public void print​(java.lang.Object obj)
        Overrides:
        print in class java.io.PrintStream
        See Also:
        PrintStream.print(Object)
      • print

        public void print​(java.lang.String s)
        Overrides:
        print in class java.io.PrintStream
        See Also:
        PrintStream.print(String)
      • println

        public void println()
        Overrides:
        println in class java.io.PrintStream
        See Also:
        PrintStream.println()
      • println

        public void println​(boolean x)
        Overrides:
        println in class java.io.PrintStream
        See Also:
        PrintStream.println(boolean)
      • println

        public void println​(char x)
        Overrides:
        println in class java.io.PrintStream
        See Also:
        PrintStream.println(char)
      • println

        public void println​(char[] x)
        Overrides:
        println in class java.io.PrintStream
        See Also:
        PrintStream.println(char[])
      • println

        public void println​(double x)
        Overrides:
        println in class java.io.PrintStream
        See Also:
        PrintStream.println(double)
      • println

        public void println​(float x)
        Overrides:
        println in class java.io.PrintStream
        See Also:
        PrintStream.println(float)
      • println

        public void println​(int x)
        Overrides:
        println in class java.io.PrintStream
        See Also:
        PrintStream.println(int)
      • println

        public void println​(long x)
        Overrides:
        println in class java.io.PrintStream
        See Also:
        PrintStream.println(long)
      • println

        public void println​(java.lang.Object x)
        Overrides:
        println in class java.io.PrintStream
        See Also:
        PrintStream.println(Object)
      • println

        public void println​(java.lang.String x)
        Overrides:
        println in class java.io.PrintStream
        See Also:
        PrintStream.println(String)
      • write

        public void write​(byte[] buf,
                          int off,
                          int len)
        Overrides:
        write in class java.io.PrintStream
        See Also:
        PrintStream.write(byte[],int,int)
      • write

        public void write​(int b)
        Overrides:
        write in class java.io.PrintStream
        See Also:
        PrintStream.write(int)
      • write

        public void write​(byte[] b)
                   throws java.io.IOException
        Overrides:
        write in class java.io.FilterOutputStream
        Throws:
        java.io.IOException
        See Also:
        FilterOutputStream.write(byte[])