question: public void run ( ) { int numberOfLines = highlighter . getNumberOfLines ( ) ; cachedLineDone = new boolean [ numberOfLines ] ; parser . clearCache ( numberOfLines ) ; boolean skipbreakpoint = false ; if ( isBreakPoint ( data . getInstructionPointer ( ) ) ) { skipbreakpoint = true ; } int lineNumber = data . getInstructionPointer ( ) ; while ( ( lineNumber < numberOfLines ) ) { if ( ! running ) { break ; } if ( isBreakPoint ( lineNumber ) && ! skipbreakpoint ) { break ; } else if ( isBreakPoint ( lineNumber ) && skipbreakpoint ) { skipbreakpoint = false ; } if ( ( lineNumber < numberOfLines ) ) { data . setInstructionPointer ( lineNumber + 1 ) ; try { executeLineNumber ( lineNumber , true ) ; } catch ( Exception ex ) { updateExecutionMark ( ) ; scrollToExecutionMark ( ) ; ErrorLabel . setText ( ex . toString ( ) + "" ) ; ex . printStackTrace ( ) ; break ; } } lineNumber = data . getInstructionPointer ( ) ; } data . updateDirty ( ) ; running = false ; Thread . yield ( ) ; updateAll ( ) ; frame . checkButtonStates ( ) ; runningThread = null ; }
target:  This method is used to execute the assembler by the new thread.