1. A method for managing running of instructions in a program, comprising: receiving, in a processor of the data processing system, a monitoring instruction of a monitoring unit, determining, by the processor, if at least one secondary thread of a set of secondary threads is available for use as an assist thread; responsive to a determination that the at least one secondary thread of the set of secondary threads is available for use as the assist thread, selecting, by the processor, the at least one secondary thread from the set of secondary threads to become the assist thread; and changing, by the processor, profiling of running of instructions in the program from the main thread to the assist thread.