Java: Concurrency / Java: Параллелизм: 1. Processes and Threads

Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

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

uncle_Lem 12.09.13 в 10:53

0

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

uncle_Lem 12.09.13 в 10:55

0

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

uncle_Lem 12.09.13 в 11:05

0

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

uncle_Lem 12.09.13 в 11:27

0

## Процессы

uncle_Lem 12.09.13 в 11:27

0

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

AlexSam 19.12.13 в 19:50

0

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

AlexSam 19.12.13 в 19:54

0

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

AlexSam 19.12.13 в 19:57

0

## Потоки

Proxeter 16.12.13 в 15:21

0

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

AlexSam 19.12.13 в 19:41

0

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

AlexSam 19.12.13 в 19:43

0

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

AlexSam 19.12.13 в 19:47

0
Минутку...