Создание потоков приводит к потере ресурсов только в том случае, если вы начнете создавать их тонны, один или два дополнительных потока не повлияют на производительность платформы, в Infact System в настоящее время для меня более 70 потоков, а msn использует 32 ( Я действительно понятия не имею, как мессенджер может использовать такое количество потоков, особенно когда он свернут и ничего не делает ...)
Обычно хорошее время для порождения потока - это когда что-то занимает много времени, но вам нужно продолжать делать что-то еще.
например, скажем, расчет займет 30 секунд. Лучше всего создать новую цепочку вычислений, чтобы вы могли продолжать обновлять экран и обрабатывать любые пользовательские вводы, потому что пользователи будут ненавидеть его, если ваше приложение зависнет, пока оно не выполнит вычисления.
С другой стороны, создание потоков для выполнения чего-то, что может быть выполнено практически мгновенно, почти бессмысленно, поскольку издержки на создание (или даже просто передачу работы существующему потоку с использованием пула потоков) будут выше, чем просто выполнение работа на первом месте.
Иногда вы можете разбить ваше приложение на пару отдельных частей, которые работают в своих собственных потоках. Например, в играх обновления / физика и т. Д. Могут быть одним потоком, а графические объекты - другим, звук / музыка - третьим, а сетевое взаимодействие - другим. Проблема здесь в том, что вам действительно нужно подумать о том, как эти части будут взаимодействовать, иначе у вас может быть плохая производительность, ошибки, которые кажутся «случайными», или это может даже привести к тупику.