public synchronized void run()
    {
        try
        {
            while (Thread.currentThread() == reader)
            {
                try
                {
                    this.wait(100);
                }
                catch (InterruptedException ie)
                {
                }
                if (pin.available() != 0)
                {
                    String input = this.readLine(pin);
                    textArea.append(input);
                    textArea.setCaretPosition(textArea.getDocument().getLength()); //DWM 02-07-2012
                }
                if (quit) return;
            }

            while (Thread.currentThread() == reader2)
            {
                try
                {
                    this.wait(100);
                }
                catch (InterruptedException ie)
                {
                }
                if (pin2.available() != 0)
                {
                    String input = this.readLine(pin2);
                    textArea.append(input);
                    textArea.setCaretPosition(textArea.getDocument().getLength()); //DWM 02-07-2012
                }
                if (quit) return;
            }
        }
        catch (Exception e)
        {
            textArea.append("\nConsole reports an Internal error.");
            textArea.append("The error is: " + e);
            textArea.setCaretPosition(textArea.getDocument().getLength()); //DWM 02-07-2012
        }
    }