1. A computer-implemented method for executing multithreaded applications, comprising: under the control of one or more computer systems configured with executable instructions, receiving application input information for a multithreaded application having a plurality of execution threads, the application input information being data used in executing the multithreaded application; accessing a schedule database including a plurality of thread execution schedules associated with the multithreaded application, a thread execution schedule of the plurality of thread execution schedules specifying one or more conditions placed on the execution of the multithreaded application, the one or more conditions indicating a thread switch in executing the plurality of execution threads, wherein the schedule database is populated with at least one thread execution schedule by enabling free threading of an application by an executing computer system and monitoring execution of the application to produce at least a portion of the least one thread execution schedule; selecting, based at least in part on the application input information, a thread execution schedule of the plurality of thread execution schedules for executing the multithreaded application; causing the multithreaded application to be executed by a computer system in accordance with the selected thread execution schedule; receiving execution status information of the multithreaded application from the computer system; and storing the received execution status information.