Multi-threaded applications are programs capable of performing several operations at the same time. These apps do so by running multiple threads (independent sequences of instructions) within the context of a single process. Threads synchronize actions and use the same resources, but they run and execute independently from each other.
Concurrent execution improves the performance and responsiveness of an app. Multi-threading also allows programs to take full advantage of available hardware (particularly modern multi-core processors).