Готовый перевод Java: Concurrency / Java: Параллелизм: 1. Processes and Threads

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «идёт перевод»

# Процессы и потоки

В многопоточном программировании существуют две базовые исполняемые единицы: _процессы_ и _потоки_. В Java многопоточное программирование в основном работает с потоками. Тем не менее, процессы тоже важны.

Компьютерная система обычно имеет много активных процессов и потоков. Это верно даже для систем с единственным процессорным ядром, и, таким образом, в действительности в каждый момент времени они на самом деле выполняют один поток. Процессорное время единственного ядра делится между процессами и потоками при помощи функции ОС, которая называется квантованием времени.

Сейчас все чаще и чаще можно встретить компьютеры с несколькими процессорами или процессоры с несколькими ядрами. Это значительно улучшает возможности системы к параллельному выполнению процессов и потоков, но параллелизм возможен даже на простых системах без нескольких процессоров или ядер.

## Процессы

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

Процессы часто рассматривают как синонимы программы или приложения. Однако, то, что пользователь видит как единичное приложение, может на самом деле быть набором взаимодействующих процессов. Для того, что бы способствовать общению между процессами большинство операционных систем поддерживают объекты _Между Процессной Коммуникации_ (МПК), такие как пайпы и сокеты. МПК используются не только для коммуникации между процессами одной системы, но и процессами разных систем.

Большинство реализаций Java виртуальных машин выполняются в одном потоке. Java приложение может создавать дополнительные процессы используя [`ProcessBuilder`](http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html). Многопроцессные приложения выходят за рамки данного урока.

## Потоки

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

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

Многопоточное выполнение базовая функция Java платформы. Каждое приложение содержит как минимум один поток или несколько, если вы добавите "системные" потоки, которые занимаются такими вещами как управление памяти или обработка сигналов. Но, с точки зрения разработчика приложений, вы начинаете всего с одним потоком, который называется _основной поток_ (main thread). Этот поток может создавать другие оптоки, так, как мы покажем в следующей части.

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: идёт перевод

Переведено на Нотабеноиде
http://notabenoid.org/book/43683/171667

Переводчики: AlexSam, uncle_Lem, Proxeter

Настройки

Готово:

100.00% КП = 1.0