Чем процесс отличается от потока java
Перейти к содержимому

Чем процесс отличается от потока java

  • автор:

Чем процесс отличается от потока?

Потоки выполнения процесса можно уподобить нескольким вместе работающим поварам. Все они готовят одно блюдо, читают одну и ту же кулинарную книгу с одним и тем же рецептом и следуют его указаниям, причём необязательно все они читают на одной и той же странице.

Поток Процесс
Поток имеет стэк – свою память для исполнения. Процесс – это совокупность кода и данных, финкционирующих в виртуальном (адресном) пространстве.
Потоки выполнения существуют как составные элементы процессов. Процессы, как правило, независимы.
Несколько потоков выполнения внутри процесса совместно используют информацию о состоянии, а также память и другие вычислительные ресурсы. Несут значительно больше информации о состоянии.
Потоки выполнения совместно используют их адресное пространство. Операционная система (ОС) для каждого процесса создает своё, так называемое «виртуальное адресное пространство» в памяти, к которому процесс имеет прямой доступ.
Взаимодействуют только через предоставляемые системой механизмы связей между процессами (файлы, каналы связи..)
Переключение контекста между потоками выполнения в одном процессе, как правило, быстрее, чем переключение контекста между процессами.
Потоки расходуют существенно меньше ресурсов, чем процессы, в процессе выполнения работы выгоднее создавать дополнительные потоки и избегать создания новых процессов.

Когда запускается любое приложение, то начинает выполняться поток, называемый главным потоком (main). От него порождаются дочерние потоки.

Главный поток, как правило, является последним потоком, завершающим выполнение программы.

Несмотря на то, что главный поток создаётся автоматически, им можно управлять через объект класса Thread. Для этого нужно вызвать метод currentThread(), после чего можно управлять потоком.

Класс Thread содержит несколько методов для управления потоками:

В нем пишется выполняемый код

Запускает переопределенный метод run()

* Если просто запустить run() не будет параллельности выполнения — просто выполниться метод run().

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *