Java Guru πŸ€“
13.2K subscribers
900 photos
15 videos
773 links
Канал с вопросами ΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ с собСсСдований!

По сотрудничСству ΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ΅: @NadikaKir

Канал Π² ΠΏΠ΅Ρ€Π΅Ρ‡Π½Π΅ РКН: https://vk.cc/cJrSQZ

ΠœΡ‹ Π½Π° Π±ΠΈΡ€ΠΆΠ΅: telega.in/channels/javatasks/card?r=lcDuijdm
Download Telegram
Π Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ classloader'Ρ‹ ΠΈ ΠΈΡ… ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ. Из Π·Π° Ρ‡Π΅Π³ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ NoClassDefFoundError, NoSuchMethodError?

Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ classloader'ΠΎΠ²
1. Bootstrap
2. System
3. Application

β€’
NoClassDefFoundError ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ, Ссли Π½ΡƒΠΆΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с этим классом Π½Π΅Ρ‚ Π² classpath
β€’
NoSuchMethodError ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΈΠ·-Π·Π° нСсовмСстимости Π²Π°ΡˆΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ссли зависимая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° A Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· старой вСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ B, Π½ΠΎ Π² classpath Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ новая вСрсия Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ B, c Π΄Ρ€ΡƒΠ³ΠΎΠΉ сигнатурой этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°
⚑18πŸ‘8🀩2πŸ‘Œ1
Какой Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ компиляции ΠΈ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹?
πŸ‘13🐳4πŸ‘Ž2⚑1🍌1
synchronized. wait/notify/notifyAll. Как Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ Π°Π½Π°Π»ΠΎΠ³ΠΈ ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° j.u.c?

Π”Π°Π»ΡŒΡˆΠ΅ тСзисы:
β€’ synchronized β€” ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅ скоуп критичСской сСкции. МоТно ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² объявлСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΈΠ»ΠΈ Π² Π²ΠΈΠ΄Π΅ Π±Π»ΠΎΠΊΠ° Π² ΠΊΠΎΠ΄Π΅.
β€’ wait() β€” ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π΄Π° Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π±ΡƒΠΆΠ΅Π½ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ‚Ρ€Π΅Π΄ΠΎΠΌ Ρ‡Π΅Ρ€Π΅Π· notify/notifyAll.
β€’ Π£ wait() Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ вСрсии с Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π°ΠΌΠΈ.
β€’ Π’Ρ€Π΅Π΄ ставится Π² wait-set Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅
β€’ ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ wait() Π½ΡƒΠΆΠ½ΠΎ Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ (Ρ‡Π΅Ρ€Π΅Π· synchronized)
β€’ Магия wait() β€” ΠΎΠ½ отпускаСт Π»ΠΎΠΊ Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° послС Π²Ρ‹Π·ΠΎΠ²Π°, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² дальнСйшСм Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Ρ€Π΅Π΄ ΠΌΠΎΠ³ Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ notify/notifyAll
β€’ notify() β€” Π±ΡƒΠ΄ΠΈΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… Ρ‚Ρ€Π΅Π΄ΠΎΠ², Π½ΠΎ Π’Π°ΠΆΠ½ΠΎ! β€” Π»ΠΎΠΊ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Π½Π΅ отпускаСт, Ρ‚.Π΅ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠΉ Ρ‚Ρ€Π΅Π΄ Ρ€Π°Π·Π±ΡƒΠΆΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚, Π½ΠΎ с ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ΠΌ Π²Ρ…ΠΎΠ΄Π° Π² ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (Ρ‚.ΠΊ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ остановился Π½Π° synchronized). Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли послС notify Π΅ΡΡ‚ΡŒ тяТСлыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, это Π·Π°Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠΉ Ρ‚Ρ€Π΅Π΄, Ρ‚.ΠΊ Ρ‚Ρ€Π΅Π΄ с notify Π΅Ρ‰Π΅ Π½Π΅ отпустил ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€
β€’ notifyAll() β€” Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Π±ΡƒΠΆΠ΅Π½Ρ‹ всС Ρ‚Ρ€Π΅Π΄Ρ‹ Π² wait-set, Π½ΠΎ ΠΏΡ€ΠΈ этом Π΄Π°Π»Π΅Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Ρ€Π΅Π΄Π°ΠΌΠΈ происходит contention («сраТСниС») Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€
β€’ Π’Ρ€Π΅Π΄ Π½Π° wait() ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π±ΡƒΠΆΠ΅Π½ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· interrupt, ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· spurious wake-up, ΠΈΠ»ΠΈ ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ
β€’ Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ условиС выполнСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Ρ‚Ρ€Π΅Π΄, провСряСтся Π² Ρ†ΠΈΠΊΠ»Π΅ while, Π° Π½Π΅ Π² if
β€’ ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²-Π°Π½Π°Π»ΠΎΠ³ β€”
Condition
πŸ‘17πŸ”₯5
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ компиляции ΠΈ выполнСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°?
πŸ‘19πŸ‘Ž3⚑1
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ компиляции ΠΈ выполнСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°?
Anonymous Quiz
28%
c
29%
a b c
9%
c b a
34%
Ошибка компиляции
πŸ‘21
volatile. happens-before.

β€’ ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово volatile устанавливаСт ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ happens-before Π½Π°Π΄ опСрациями записи-чтСния Π½Π° ΠΏΠΎΠ»Π΅
β€’ Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ чтСния ΠΈΠ· Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΡ… Ρ‚Ρ€Π΅Π΄ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ эффСкты записи ΠΏΠΈΡˆΡƒΡ‰ΠΈΡ… Ρ‚Ρ€Π΅Π΄ΠΎΠ².
β€’ Π’ частности, Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° double checked locking. Для double/long Ρ‚ΠΈΠΏΠΎΠ² Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° атомарности, ΠΎΠ½Π° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π°Ρ‚ΠΎΠΌΠΈΠΊΠΈ
πŸ‘18πŸ”₯3⚑1
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния ΠΊΠΎΠ΄Π°?
πŸ‘17πŸ”₯3🀑3
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния ΠΊΠΎΠ΄Π°?
Anonymous Quiz
9%
int
36%
Object
32%
Integer
23%
Ошибка компиляции
πŸ‘24🐳6πŸ”₯4πŸŽ‰1
Как ΠΏΠΎΠΉΠΌΠ°Ρ‚ΡŒ exception ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅Π΄Π°?

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Thread.UncaughExceptionHandler
πŸ‘28⚑5πŸ”₯3
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² консоль?
πŸ‘18πŸ‘Ž1
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² консоль?
Anonymous Quiz
41%
123456
14%
1234567
31%
012345
14%
0123456
πŸ‘32❀‍πŸ”₯2πŸ‘Ž2
AtomicInteger, AtomicLong, AtomicBoolean, AtomicDouble

β€’ Атомики ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ измСнСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ… Π±Π΅Π· эффСкта Π³ΠΎΠ½ΠΎΠΊ.
β€’ НапримСр, 10 Ρ‚Ρ€Π΅Π΄ΠΎΠ² инкрСмСнтят AtomicInt = 0, основной Ρ‚Ρ€Π΅Π΄ ΠΆΠ΄Π΅Ρ‚ ΠΈΡ… выполнСния Ρ‡Π΅Ρ€Π΅Π· countdown-latch, Π΄Π°Π»Π΅Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π°Ρ‚ΠΎΠΌΠΈΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ 10.
β€’ Основной ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ Π°Ρ‚ΠΎΠΌΠΈΠΊΠΎΠ² β€” Ρ†ΠΈΠΊΠ» cas (compare-and-set). На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ increment:
1. Π§ΠΈΡ‚Π°Π΅ΠΌ староС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
2. ΠŸΠ΅Ρ€Π΅Π΄ set'ΠΎΠΌ провСряСм староС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ссли ΠΎΠ½ΠΎ Π½Π΅ измСнилось, сСтаСм староС + 1
3. Если измСнилось, Π² слСд. ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Β«Π½ΠΎΠ²ΠΎΠ΅Β» староС, Π΄Π°Π»Π΅Π΅ см. ΠΏ. 1
πŸ‘26⚑5πŸ”₯1
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ?
πŸ‘16πŸ‘Ž3πŸ”₯2
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ?
Anonymous Quiz
5%
current version: 0.1a
66%
current version: 0.5b
8%
current version: 0.1a current version: 0.5b
21%
Ошибка компиляции
πŸ‘23πŸ”₯4
ReentrantLock

ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ² синхронизации, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ критичСской сСкции. Π’Ρ€Π΅Π΄, ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ…ΠΎΠ΄ΠΎΠΌ Π² ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π·Π°Ρ…Π²Π°Ρ‚ c ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ lock(), послС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΊΡ€ΠΈΡ‚. сСкции β€” ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ unlock(). Π”Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Ρ€Π΅Π΄ Π² это врСмя ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Π½Π° lock'Π΅ (ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ оТидания), Π»ΠΈΠ±ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· tryLock().

ReentrantLock ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒ (Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ»-Π²ΠΎ Ρ€Π°Π·, сколько Ρ€Π°Π· ΠΎΠ½ Π±Ρ‹Π» Π·Π°Ρ…Π²Π°Ρ‡Π΅Π½), Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ thread starvation Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Ρ€Π΅Π΄ΠΎΠ², ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… Ρƒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ критичСской сСкции.
ReentrantLock ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ «чСстным» (fairness = true), Ρ‚ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ отдаСтся Ρ‚Ρ€Π΅Π΄Π°ΠΌ, ΠΆΠ΄ΡƒΡ‰ΠΈΡ… Π½Π° Π½Π΅ΠΌ наибольшСС ΠΊΠΎΠ»-Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ это Π²Ρ€ΠΎΠ΄Π΅ ΠΊΠ°ΠΊ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ


lock.lock(); // block until condition holds
try {
// ... method body
} finally {
lock.unlock()
}
πŸ‘20πŸ”₯2
Какой Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹?
πŸ‘21
Какой Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹?
Anonymous Quiz
48%
1 2
1%
2 1
4%
Ошибка Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния
47%
Ошибка компиляции
πŸ‘32πŸŽ‰4
Countdown Latch/Cyclic Barrier

CountdownLatch (Β«Π·Π°Ρ‰Π΅Π»ΠΊΠ°Β») β€” ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ² синхронизации, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, основной thread ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ выполнСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… N Ρ‚Ρ€Π΅Π΄ΠΎΠ². Π’Ρ€Π΅Π΄Ρ‹, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ countDown() Π½Π° Π·Π°Ρ‰Π΅Π»ΠΊΠ΅, основной Ρ‚Ρ€Π΅Π΄ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ await(). Когда счСтчик достигаСт нуля, основной Ρ‚Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Для синхронизации N Ρ‚Ρ€Π΅Π΄ΠΎΠ² (всС ΠΆΠ΄ΡƒΡ‚ всСх) ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ
CyclicBarrier, Π΅ΠΌΡƒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ дСйствиС (Ρ‡Π΅Ρ€Π΅Π· Runnable), выполняСмоС послС синхронизации всСх-со-всСми
πŸ‘16
Каким Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ компиляции ΠΈ выполнСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°?
πŸ‘8