Class StreamCopyThread

  • All Implemented Interfaces:
    java.lang.Runnable

    public class StreamCopyThread
    extends java.lang.Thread
    Thread to copy from an input stream to an output stream.
    • Nested Class Summary

      • Nested classes/interfaces inherited from class java.lang.Thread

        java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static int BUFFER_SIZE  
      private boolean done  
      private java.io.OutputStream dst  
      private java.io.InputStream src  
      private java.lang.Object writeLock
      Lock held by flush to avoid interrupting a write.
      • Fields inherited from class java.lang.Thread

        MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
    • Constructor Summary

      Constructors 
      Constructor Description
      StreamCopyThread​(java.io.InputStream i, java.io.OutputStream o)
      Create a thread to copy data from an input stream to an output stream.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void halt()
      Request that the thread terminate, and wait for it.
      void run()
      • Methods inherited from class java.lang.Thread

        activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
      • Methods inherited from class java.lang.Object

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

      • src

        private final java.io.InputStream src
      • dst

        private final java.io.OutputStream dst
      • done

        private volatile boolean done
      • writeLock

        private final java.lang.Object writeLock
        Lock held by flush to avoid interrupting a write.
    • Constructor Detail

      • StreamCopyThread

        public StreamCopyThread​(java.io.InputStream i,
                                java.io.OutputStream o)
        Create a thread to copy data from an input stream to an output stream.
        Parameters:
        i - stream to copy from. The thread terminates when this stream reaches EOF. The thread closes this stream before it exits.
        o - stream to copy into. The destination stream is automatically closed when the thread terminates.
    • Method Detail

      • halt

        public void halt()
                  throws java.lang.InterruptedException
        Request that the thread terminate, and wait for it.

        This method signals to the copy thread that it should stop as soon as there is no more IO occurring.

        Throws:
        java.lang.InterruptedException - the calling thread was interrupted.
      • run

        public void run()
        Specified by:
        run in interface java.lang.Runnable
        Overrides:
        run in class java.lang.Thread