code: public final void run() throws IOException, InterruptedException {
          InputStreamReader isr = new InputStreamReader(this.is, this.charset);
          BufferedReader br = new BufferedReader(isr);
          this.line = null;
          this.lineNumber = 0;
          try {
              do {
                  if (this.exit) {
                      return;
                  }
                  if(Thread.currentThread().isInterrupted()){
                  throw new InterruptedException();
              }
                  this.nextLine = br.readLine();
                  try {
                      if (this.line != null) {
                          processLine(this.line);
                          if (this.exit) {
                              return;
                          }
                      }
                  } catch (Exception e) {
                      onExceptionFound(e);
                  } finally {
                      this.lineNumber++;
                      this.line = this.nextLine;
                  }
              } while (this.line != null);
          } finally {
              onFinish();
          }
      }
docs: Synchronously processes the input stream
  @throws IOException
  @throws InterruptedException