1. A method, in a data processing system, for programming a direct memory access engine operating as a multithreaded processor, the method comprising: receiving, from a host processor, a plurality of programs in either a local storage or a memory associated with the direct memory access engine; receiving a request, from the host processor, in the direct memory access engine, to execute the plurality of programs located in either the local storage or the memory using a set of parameters; executing, by the direct memory access engine and without intervention by a host processor, two or more of the plurality of programs; and as each of the two or more of the plurality of programs completes execution, sending, by the direct memory access engine, a completion notification to the host processor that indicates that the program has completed execution, wherein: the direct memory access engine is programmed to recognize a plurality of predefined direct memory access instructions of a direct memory access engine instruction set, the direct memory access engine instruction set comprises at least one instruction for causing the predefined direct memory access instruction to execute at least one of a first predefined subroutine, of the direct memory access engine, to implement a scatter access of the memory, a second predefined subroutine, of the direct memory access engine, to implement a gather access of the memory, or a third predefined subroutine, of the direct memory access engine, to implement a strided access of the memory, the direct memory access engine is further configured to execute a plurality of direct memory access commands simultaneously, in a multithreaded manner, in response to the plurality of programs referencing the plurality of direct memory access commands, wherein each direct memory access command references one or more of the predefined direct memory access instructions, and the direct memory access engine comprises a set of program counters and a set of private state facilities for each direct memory access command, in the plurality of direct memory access commands, executed simultaneously by the direct memory access engine, and executes the plurality of direct memory access commands simultaneously using the set of program counters and set of private state facilities.