1. Чем процесс отличается от потока?
UNKNOWN
Потоки выполнения процесса можно уподобить нескольким вместе работающим поварам. Все они готовят одно блюдо, читают одну и ту же кулинарную книгу с одними тем же рецептом и следуют его указаниям, причём не обязательно все они читают на одной и той же странице.
ПОТОКИ:
- Поток имеет стэк – свою память для исполнения.
- Потоки выполнения существуют как составные элементы процессов
- Несколько потоков выполнения внутри процесса совместно используют информацию о состоянии,а также память и другие вычислительные ресурсы
- Потоки выполнения совместно используют их адресное пространство
- Переключение контекста между потоками выполнения в одном процессе, как правило, быстрее, чем переключение контекста между процессами.
- Потоки расходуют существенно меньше ресурсов, чем процессы, в процессе выполнения работы выгоднее создавать дополнительные потоки и избегать создания новых процессов
ПРОЦЕССЫ:
- Процесс – это совокупность кода иданных, финкционирующих ввиртуальном (адресном) пространстве.
- Процессы как правило,независимы
- Несут значительно больше информации о состоянии
- Операционная система (ОС) для каждого процесса создает своё, так называемое «виртуальное адресное пространство» в памяти, к которому процесс имеет прямой доступ.
- Процессы взаимодействуют только через предоставляемые системой механизмы связей между процессами (файлы, каналы связи..)
Когда запускается любое приложение, то начинает выполняться поток, называемый главным потоком (main). От него порождаются дочерние потоки. Главный поток, как правило, является последним потоком, завершающим выполнение программы.
Несмотря на то, что главный поток создаётся автоматически, им можно управлять через объект класса Thread. Для этого нужно вызвать метод currentThread(), после чего можно управлять потоком.
Класс Thread содержит несколько методов для управления потоками.
getName() - получить имя потока
getPriority() - получить приоритет потока
isAlive() - определить, выполняется ли поток
join() - ожидать завершение потока
run() - запуск потока. В нём пишите свой код
sleep() - приостановить поток на заданное время
start() - запустить поток, запускает переопределенный метод run(). Если просто запустить run() не будет параллельности выполнения просто выполниться метод run()
Предыдущий вопрос: 10. Что такое ZonedDateTime?
Следующий вопрос: 2. Чем Thread отличается от Runnable? Когда нужно использовать Thread, а когда Runnable?
Все вопросы по теме: список
Все темы: список
Вопросы/замечания/предложения/нашли ошибку: напишите мне