Patent ID: 8832173

Claim:
A computer-implemented method of multithreaded processing comprising: storing information corresponding to a plurality of jobs in a jobs table for scheduling execution of each job, wherein the information stored in the jobs table specifies a job type and an execution order for the plurality of jobs; associating a thread on each of a plurality of servers with a job type; retrieving a first job by a first thread of each of a plurality of servers, wherein the first job has a first job type and the first thread on each server is associated with said first job type, wherein the first job is retrieved based on the execution order for the first job and the job type, and wherein each of the plurality of servers retrieves the first job using the associated first thread when said first thread becomes available; storing a task identifier and a task status corresponding to a plurality of job tasks for the first job in a metadata table, wherein the metadata table is accessible by each associated first thread on each of the plurality of servers for synchronizing processing of the each lob across the plurality of servers; processing one or more job tasks for said first job sequentially by said associated first thread on one of the plurality of servers when querying the metadata table for the task identifier returns a sequential job task, wherein when the other associated first threads have retrieved said first job, the other associated first threads on the remaining plurality of servers are in a wait state during the processing of the one or more sequentially processed job tasks; processing one or more other job tasks for said first job in parallel by said associated first threads on the plurality of servers when querying the metadata table for the task identifier returns a parallel job task; and picking up the processing of the one or more job tasks or the one or more other job tasks with the associated first thread by one of the servers of the plurality of servers for another of the servers of the plurality of servers for a processing failure of the one or more job tasks or the one or more other job tasks, wherein when said associated first thread on one of the plurality of servers finishes processing a first job task sequentially and starts processing a second job task in parallel, said associated first thread updates the task status indicating that said first job task has been completed and the second job task is being processed and updates the task identifier indicating that the second job task is a parallel job task, and wherein said other associated first threads process said second job task in parallel when querying the metadata table for the task identifier returns the parallel job task.