Основное отличие, когда речь заходит об ООП и многопоточном программировании, заключается в том, что вы хотите, чтобы ваш новый поток имел в качестве функции запуска (нестатический) метод объекта.
Теперь есть несколько моделей программирования для этого: реализация интерфейса «Runnable» является наиболее распространенной. Ваш класс реализует стандартный интерфейс «Runnable», который имеет метод запуска, который обычно является виртуальным методом, называемым «run». Вы помещаете свой стартовый код в этот виртуальный метод, и когда вам нужно создать поток, вы создаете объект потока (обычно называемый потоком) и передаете ему объект вашего класса, который реализует интерфейс «Runnable». Затем вы вызываете метод "start" этого объекта "Thread", и он позаботится о том, чтобы код запуска, который вы написали в своем классе, запустился в новом потоке. В этом примере «Runnable» и «Thread» предоставляются выбранной библиотекой потоков или стандартной библиотекой / структурой языка программирования по вашему выбору. Также обратите внимание, что названия этих двух классов могут различаться.
Существует большая разница между C ++ и Java, когда речь идет о многопоточном программировании: C ++ не поддерживает многопоточность, в отличие от Java, которая имеет встроенную поддержку для этого.
Таким образом, для C ++ вам потребуется использовать специализированную библиотеку потоков, такую как Pthreads (http://en.wikipedia.org/wiki/POSIX_Threads) или более универсальные библиотеки, такие как Boost, ACE, POCO, в которых уже есть поддержка потоков. Наименее рекомендуемый способ - Вызовите напрямую службы многопоточности ОС.
Для Java, независимо от того, какую редакцию вы используете, у вас уже будет встроенная поддержка многопоточного программирования.