Один вопрос, который я увидел в вашем вопросе:
Прав ли я, что кто-то использует такую реализацию для ускорения работы программы?
Нет,не в этом дело.Вы должны понимать, что создание и запуск потоков, а затем их синхронизация так или иначе, чтобы избежать условий гонки (для достижения правильного, детерминированного поведения), не бесплатны.
Потоки - это ресурсыбазовая операционная система.Для их создания, запуска, управления ими требуется время .
Поэтому: использование нескольких потоков автоматически не переводится в "моя программа работает быстрее".Несколько потоков только ускоряют процесс, когда преимущество параллельной обработки данных получает больше, чем первоначальная стоимость создания этих потоков.И, конечно же, вам также необходимо оборудование, способное выполнять потоки параллельно. Если ваше оборудование сможет запускать только один поток за раз, то выполнение вещи, которая использует только ЦП (и никогда не ожидает некоторого внешнего ввода), тогда наличие нескольких потоков всегда будетпомедленнее.
Теперь ваша задача - подсчитать символы в короткой строке, предоставленной пользователем.Это быстрее всего решается одним потоком, повторяющим строку и выполняющим свою работу.Таким образом: скорее всего, ваша многопоточная программа будет немного медленнее по сравнению с простым однопоточным решением.
Если, с другой стороны, ваша задача будет читать тысячи файлов с миллионами строктекста, например, для создания своего рода индекса для полнотекстового поиска, тогда, конечно: использование нескольких потоков может значительно ускорить общее время выполнения.
Помимо этого: код, который вы написали до сих пор, ничего не делает,Чтобы создать разумную программу, вам необходимо:
- иметь некоторый код в этом методе
run()
. - , чтобы затем создать несколько потоков, которые будут вызывать этот метод
run()
параллельно
Разумеется, что также требует от вас разумного разбиения ваших данных.Например, каждый поток может подсчитать определенную подстроку вашего ввода.