1. A system for dynamically parallelizing an application program, the system comprising: a multi-core controller including at least one processing device to assign an operation to each of threads that are generated while running the application program; a monitoring unit to monitor the multi-core controller to determine the number of available threads during the running of the application program; and a change unit to change the number of threads based on the determined number of available threads, during the running of the application program, wherein the change unit selectively increases or decreases the number of threads when a change in the determined number of available threads is detected.