How does multithreading impact UI updates, and how do you ensure the main thread remains responsive during heavy data processing?