Я видел то же самое. В идеале вы должны выполнить любую операцию, которая займет больше, чем несколько сотен мс в фоновом потоке. Все, что короче 100 мс и человек, вероятно, не заметит разницы.
Многие программисты с графическим интерфейсом, с которыми я работал в прошлом, боятся потоков, потому что они "трудные". В некоторых GUI-средах, таких как Delphi VCL, есть предупреждения об использовании VCL из нескольких потоков, и это пугает некоторых людей (другие воспринимают это как вызов;))
Одним из интересных примеров многопоточного кодирования GUI является API BeOS. Каждое окно в приложении получает свой собственный поток. По моему опыту, приложения BeOS стали более отзывчивыми, но программирование стало немного сложнее. К счастью, поскольку BeOS по умолчанию был разработан как многопоточный, в API было много вещей, которые облегчили бы задачу, чем в некоторых других ОС, которые я использовал.