Π£ Π½Π°Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Java. ΠΠ΅ΠΊΡΠΈΡ β2: Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ ΡΠΊΠ°ΡΠ°ΡΡ Π² ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½ΠΎ Π½Π° ΡΡΡΠ±. ΠΠ»Ρ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΠ· ΡΠΎΡΠΌΡ Π½ΠΈΠΆΠ΅:
ΠΡΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ Π½Π΅
Π·Π°Π³ΡΡΠ·ΠΈΠ»ΠΈΡΡ
ΠΠΠΠΠΠ’Π ΠΠΠΠ‘Π¬ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ
ΠΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ° Π½Π°ΠΏΠΈΡΠΈΡΠ΅ Π² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ Π²Π½ΠΈΠ·Ρ
ΡΡΡΠ°Π½ΠΈΡΡ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ° ClipSaver.ru
ΠΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°Ρ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ ΡΠΏΠΎΡΠΎΠ±Π΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ: ΠΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ synchronized ΡΠ΅ΠΊΡΠΈΠΉ Π² Java: 1. https://shipilev.net/jvm/anatomy-quar... 2. https://shipilev.net/jvm/anatomy-quar... Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ Π±Π΅Π· ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π»Π΅ΠΊΡΠΈΠΈ ΠΏΡΠΎ lock-free ΠΏΠΎΠ½ΡΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΈ Ρ ΠΏΡΠΎΠ΄ΡΠ±Π»ΠΈΡΡΡ ΠΈΡ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π»Π΅ΠΊΡΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ²Π΅ΡΠ΅Π½ Π½Π°ΠΉΠ΄ΡΡΡΡ ΠΈ ΡΠ΅ Π»ΡΠ΄ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΌΠΎΠ³ΡΡ ΡΠ³Π»ΡΠ±ΠΈΡΡΡΡ: Project Loom: Β Β Β β’Β AlanΒ BatemanΒ βΒ ProjectΒ loom:Β ModernΒ s...Β Β inline ΡΠΈΠΏΡ: Β Β Β β’Β Π‘Π΅ΡΠ³Π΅ΠΈΜΒ ΠΡΠΊΡΠ΅Π½ΠΊΠΎΒ βΒ ΠΡΠΆΠ½ΡΒ Π»ΠΈΒ Π²Β JavaΒ Β«ΠΈ...Β Β ΠΡΡΡ Π»Π΅ΠΊΡΠΈΠΉ ΠΏΡΠΎ ΡΠΎ, ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ: 1. Β Β Β β’Β NirΒ ShavitΒ βΒ Locking,Β fromΒ traditiona...Β Β 2. Β Β Β β’Β NirΒ ShavitΒ βΒ Locking,Β fromΒ traditiona...Β Β 3. Β Β Β β’Β NirΒ ShavitΒ βΒ Locking,Β fromΒ traditiona...Β Β 4. Β Β Β β’Β NirΒ ShavitΒ βΒ Locking,Β fromΒ traditiona...Β Β ΠΡΠΎΠ±Π»Π΅ΠΌΡ Read-write Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ: 1. JetBrains (Java): Β Β Β β’Β ΠΠ»Π΅ΠΊΡΠ΅ΠΉΒ ΠΡΠ΄ΡΡΠ²ΡΠ΅Π²Β βΒ ComputerΒ ScienceΒ ...Β Β 2. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ (Rust): Β Β Β β’Β RustΒ atΒ speedΒ βΒ buildingΒ aΒ fastΒ concu...Β Β 3. ΠΠΎΠΉ Π±ΡΠ²ΡΠΈΠΉ ΠΊΠΎΠ»Π»Π΅Π³Π° (C++): Β Β Β β’Β ΠΠΎΠ½ΡΡΠ°Π½ΡΠΈΠ½Β ΠΠ±Π»Π°ΠΊΠΎΠ²Β ΠΡΠ°ΠΊΡΠΈΠΊΠ°Β Lock-free...Β Β ΠΠ°Π±ΠΎΡ ΠΈΡΡΠΎΡΠΈΠΉ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΏΠ»ΠΎΡ ΠΎ: Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΊΠ°Π½Π°Π»ΠΎΠ² Π² Go: https://habr.com/ru/post/308070/ Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΊΠ°Π½Π°Π»ΠΎΠ² Π² Kotlin: Β Β Β β’Β ΠΠΈΠΊΠΈΡΠ°Β ΠΠΎΠ²Π°Π»ΡΒ βΒ ΠΠ°ΠΊΒ ΡΡΡΡΠΎΠ΅Π½ΡΒ ΠΊΠ°Π½Π°Π»ΡΒ Π²...Β Β ΠΠ»Π°Π΄ΠΈΠΌΠΈΡ ΠΠ·Π΅ΡΠΎΠ² ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π² apache ignite: Β Β Β β’Β ΠΠ»Π°Π΄ΠΈΠΌΠΈΡΒ ΠΠ·Π΅ΡΠΎΠ²Β βΒ (ΠΠΎΡΡΠΈ)Β Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡ...Β Β Π£ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΠΈΡΠΈ ΡΠΎΠ»ΠΈΠΊΠ° Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π», ΡΡΠΎ ΡΠ°ΠΌ Π½Π°ΡΡΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ final ΠΏΠΎΠ»Π΅ΠΉ Π² Java, ΡΡΠΎ Π±Ρ ΠΏΠΎΠ½ΡΡΡ Π·Π°ΡΠ΅ΠΌ Π² jdk ΠΊΠΎΠΏΠΈΡΡΡΡ ΠΏΠΎΠ»Ρ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΠΈ Π²ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ°Π»ΡΠ½ΠΎ: https://shipilev.net/jvm/anatomy-quar... Π’Π°ΠΉΠΌΠΊΠΎΠ΄Ρ: 0:00:00 ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ 0:00:10 Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ 0:05:39 ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π΅ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΡΠ΅ΠΌΡ: deadlock 0:17:15 ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²: ΠΊΠ°ΠΊ Π»ΠΎΠ²ΠΈΡΡ InterruptedException 0:29:53 ReentrantLock 0:37:40 Livelock 0:48:40 Conditions 1:05:19 Conditions: ArrayBlockingQueue 1:12:24 ReentrantReadWriteLock: ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½ΠΊΡΡΠΈΡΡΡΡΠΈΡ ΡΡΠ΅Π½ΠΈΠΉ 1:21:00 ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ synchronized ΠΊΠ°ΠΊ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ 1:23:24 ΠΠ»ΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ 1:24:44 Π§ΡΠΎ Π½Π°Ρ ΠΆΠ΄Π΅Ρ Π΄Π°Π»ΡΡΠ΅ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ