Skip to content

Commit b86ea32

Browse files
committed
update concurrency part
1 parent d1b6989 commit b86ea32

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,7 @@
357357
## Многопоточность
358358
+ [Расскажите о модели памяти Java?](concurrency.md#Расскажите-о-модели-памяти-java)
359359
+ [Что такое «потокобезопасность»?](concurrency.md#Что-такое-потокобезопасность)
360+
+ [В чём разница между _«конкуренцией»_ и _«параллелизмом»_?](concurrency.#В-чём-разница-между-конкуренцией-и-параллелизмом)
360361
+ [Что такое _«кооперативная многозадачность»_? Какой тип многозадачности использует Java? Чем обусловлен этот выбор?](concurrency.md#Что-такое-кооперативная-многозадачность-Какой-тип-многозадачности-использует-java-Чем-обусловлен-этот-выбор)
361362
+ [Что такое _ordering_, _as-if-serial semantics_, _sequential consistency_, _visibility_, _atomicity_, _happens-before_, _mutual exclusion_, _safe publication_?](concurrency.md#Что-такое-ordering-as-if-serial-semantics-sequential-consistency-visibility-atomicity-happens-before-mutual-exclusion-safe-publication)
362363
+ [Чем отличается процесс от потока?](concurrency.md#Чем-отличается-процесс-от-потока)

concurrency.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# Многопоточность
44
+ [Расскажите о модели памяти Java?](#Расскажите-о-модели-памяти-java)
55
+ [Что такое «потокобезопасность»?](#Что-такое-потокобезопасность)
6+
+ [В чём разница между _«конкуренцией»_ и _«параллелизмом»_?](#В-чём-разница-между-конкуренцией-и-параллелизмом)
67
+ [Что такое _«кооперативная многозадачность»_? Какой тип многозадачности использует Java? Чем обусловлен этот выбор?](#Что-такое-кооперативная-многозадачность-Какой-тип-многозадачности-использует-java-Чем-обусловлен-этот-выбор)
78
+ [Что такое _ordering_, _as-if-serial semantics_, _sequential consistency_, _visibility_, _atomicity_, _happens-before_, _mutual exclusion_, _safe publication_?](#Что-такое-ordering-as-if-serial-semantics-sequential-consistency-visibility-atomicity-happens-before-mutual-exclusion-safe-publication)
89
+ [Чем отличается процесс от потока?](#Чем-отличается-процесс-от-потока)
@@ -117,6 +118,23 @@ _Reordering (переупорядочивание)_. Для увеличения
117118

118119
[к оглавлению](#Многопоточность)
119120

121+
## В чём разница между _«конкуренцией»_ и _«параллелизмом»_?
122+
Конкуренция — это способ одновременного решения множества задач.
123+
124+
Признаки:
125+
126+
+ Наличие нескольких потоков управления (например _Thread_ в Java, _корутина_ в Kotlin), если поток управления один, то конкурентного выполнения быть не может
127+
+ Недетерминированный результат выполнения. Результат зависит от случайных событий, реализации и того как была проведена синхронизация. Даже если каждый поток полностью детерминированный, итоговый результат будет недетерминированным
128+
129+
Параллелизм — это способ выполнения разных частей одной задачи.
130+
131+
Признаки:
132+
133+
+ Необязательно имеет несколько потоков управления
134+
+ Может приводить к детерминированному результату, так, например, результат умножения каждого элемента массива на число, не изменится, если умножать его по частям параллельно.
135+
136+
[к оглавлению](#Многопоточность)
137+
120138
## Что такое _«кооперативная многозадачность»_? Какой тип многозадачности использует Java? Чем обусловлен этот выбор?
121139

122140
__Кооперативная многозадачность__ - это способ деления процессорного времени между потоками, при котором каждый поток обязан отдавать управление следующему добровольно.

0 commit comments

Comments
 (0)