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 support predefined subroutines to implement at least one of a scatter access, a gather access, or a strided access.