Generics: Π ΡΠ΅ΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ? Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ type-erasure? Π ΡΠ΅ΠΌ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² C++?
β’ Π’ΠΈΠΏΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ, Ρ.Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ². Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ β ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ
β’ type-erasure β ΡΡΠΎ ΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΈΠΏΠ΅-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ Π² runtime. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π΅ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ List, Set Π²ΠΌΠ΅ΡΡΠΎ List<Integer>, Set<Integer>, Π½Ρ ΠΈ type-cast'Ρ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ
β’ Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ² Π² Java, Π² Π‘++ ΡΠ°Π±Π»ΠΎΠ½Ρ Π² ΠΈΡΠΎΠ³Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠ»ΠΈ ΡΠΈΠΏΠ° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° (ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π°). ΠΠ° ΠΏΡΠΎΡΡΡΡ ΠΌΠ΅Π½Ρ Π·Π΄Π΅ΡΡ Π°Π΄Π΅ΠΏΡΡ Π‘++.
β’ Π’ΠΈΠΏΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ, Ρ.Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ². Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ β ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ
β’ type-erasure β ΡΡΠΎ ΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΈΠΏΠ΅-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ Π² runtime. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π΅ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ List, Set Π²ΠΌΠ΅ΡΡΠΎ List<Integer>, Set<Integer>, Π½Ρ ΠΈ type-cast'Ρ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ
β’ Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ² Π² Java, Π² Π‘++ ΡΠ°Π±Π»ΠΎΠ½Ρ Π² ΠΈΡΠΎΠ³Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠ»ΠΈ ΡΠΈΠΏΠ° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° (ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π°). ΠΠ° ΠΏΡΠΎΡΡΡΡ ΠΌΠ΅Π½Ρ Π·Π΄Π΅ΡΡ Π°Π΄Π΅ΠΏΡΡ Π‘++.
π25β€1
ΠΠ°ΠΊΠΎΠ΅ ΠΈΠΌΡ Ρ Π±ΠΈΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅?
Anonymous Quiz
4%
jpaClientRepository
69%
clientRepository
5%
JpaClientRepository
11%
accountRepository
6%
ΠΎΠΏΠ΅ΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π΄Π²Π° Π±ΠΈΠ½Π°:dataSource ΠΈ repository
5%
dataSource
π26π₯1
Generics: ΠΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° List<Parent>. Child Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ ΠΎΡ Parent. ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ Π² ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ List<Child>?
Π ΡΠΈΠΏΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ List<? extends Parent>
Π ΡΠΈΠΏΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ List<? extends Parent>
β‘24π4β€βπ₯1
Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°?
Anonymous Quiz
46%
7 4
13%
5 2
7%
ΠΎΡΠΈΠ±ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
34%
ΠΎΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
π16π₯4β‘3π1
Hard-references, weak references, soft-references, phantom-references
β’ Hard-references β ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ eligible for collection ΠΏΠΎΡΠ»Π΅ Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΠΎΡΡΠΈ ΠΈΠ· root set
β’ Weak-references β ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΄Π°Π»Π΅Π½Ρ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΠ»Π°Π±ΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½Π΅Π³ΠΎ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
β’ Soft-references β ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠ³ΡΡ ΡΠ΄Π°Π»ΡΡΡΡ GC ΠΏΡΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ΅ ΠΏΠ°ΠΌΡΡΠΈ
β’ Phantom-references β ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌ, ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅. ΠΡΠΆΠ½Ρ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΠ»ΠΎΠΊ (Π²ΠΌΠ΅ΡΡΠΎ finalize)
β’ Hard-references β ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ eligible for collection ΠΏΠΎΡΠ»Π΅ Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΠΎΡΡΠΈ ΠΈΠ· root set
β’ Weak-references β ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΄Π°Π»Π΅Π½Ρ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΠ»Π°Π±ΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½Π΅Π³ΠΎ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
β’ Soft-references β ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠ³ΡΡ ΡΠ΄Π°Π»ΡΡΡΡ GC ΠΏΡΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ΅ ΠΏΠ°ΠΌΡΡΠΈ
β’ Phantom-references β ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌ, ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅. ΠΡΠΆΠ½Ρ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΠ»ΠΎΠΊ (Π²ΠΌΠ΅ΡΡΠΎ finalize)
β‘12π5π₯3π2
Anonymous Quiz
12%
request
65%
singleton
10%
session
14%
prototype
π20β‘4π₯3π3π€©2
ΠΠ°ΠΊΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π² Java?
β’ Π§Π΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ
β’ Π§Π΅ΡΠ΅Π· ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ factory-method
β’ Π§Π΅ΡΠ΅Π· ΠΏΠ°ΡΡΠ΅ΡΠ½ Builder
β’ Π§Π΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ
β’ Π§Π΅ΡΠ΅Π· ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ factory-method
β’ Π§Π΅ΡΠ΅Π· ΠΏΠ°ΡΡΠ΅ΡΠ½ Builder
π36β‘4π4π₯3
ΠΠ°ΠΊΠΈΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ?
Anonymous Quiz
8%
Warning ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
10%
ΠΡΠΈΠ±ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
16%
ΠΡΠ΄Π΅Ρ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½ΠΎ "TEST " Π±Π΅Π· ΠΊΠ°Π²ΡΡΠ΅ΠΊ
35%
ΠΡΠ΄Π΅Ρ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½ΠΎ "TEST TEST " Π±Π΅Π· ΠΊΠ°Π²ΡΡΠ΅ΠΊ
10%
ΠΡΠ΄Π΅Ρ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½ΠΎ "TEST TEST TEST " Π±Π΅Π· ΠΊΠ°Π²ΡΡΠ΅ΠΊ
21%
ΠΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
π16π10β‘2π1
Π Π°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎ classloader'Ρ ΠΈ ΠΈΡ
ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΡ. ΠΠ· Π·Π° ΡΠ΅Π³ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ NoClassDefFoundError, NoSuchMethodError?
ΠΠ΅ΡΠ°ΡΡ ΠΈΡ classloader'ΠΎΠ²
1. Bootstrap
2. System
3. Application
β’ NoClassDefFoundError ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ ΡΡΠΈΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ Π½Π΅Ρ Π² classpath
β’ NoSuchMethodError ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΈΠ·-Π·Π° Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Π²Π°ΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π΅ΡΠ»ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° A Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ· ΡΡΠ°ΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ B, Π½ΠΎ Π² classpath Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ B, c Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΠ³Π½Π°ΡΡΡΠΎΠΉ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°
ΠΠ΅ΡΠ°ΡΡ ΠΈΡ classloader'ΠΎΠ²
1. Bootstrap
2. System
3. Application
β’ NoClassDefFoundError ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ ΡΡΠΈΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ Π½Π΅Ρ Π² classpath
β’ NoSuchMethodError ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΈΠ·-Π·Π° Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Π²Π°ΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π΅ΡΠ»ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° A Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ· ΡΡΠ°ΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ B, Π½ΠΎ Π² classpath Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ B, c Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΠ³Π½Π°ΡΡΡΠΎΠΉ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°
β‘18π8π€©2π1
ΠΠ°ΠΊΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ?
Anonymous Quiz
47%
ΠΠ΄Π΅ΠΌ Π³ΡΠ»ΡΡΡ Π² ΠΏΠ°ΡΠΊ
27%
ΠΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² ΠΊΠ»Π°ΡΡΠ΅ Okey Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ go()
16%
ΠΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ Π
3%
ΠΡΠΈΠ±ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
7%
ΠΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² ΠΊΠ»Π°ΡΡΠ΅ Okey Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ stop()
π15
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
ΠΠ°Π»ΡΡΠ΅ ΡΠ΅Π·ΠΈΡΡ:
β’ 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
Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°?
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 ΡΠΈΠΏΠΎΠ² Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΎΠ½Π° ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Π°ΡΠΎΠΌΠΈΠΊΠΈ
β’ ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ volatile ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ happens-before Π½Π°Π΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ Π·Π°ΠΏΠΈΡΠΈ-ΡΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΠΎΠ»Π΅
β’ Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠΈΡΠ°ΡΡΠΈΡ ΡΡΠ΅Π΄ΠΎΠ² Π±ΡΠ΄ΡΡ Π²ΠΈΠ΄Π΅ΡΡ ΡΡΡΠ΅ΠΊΡΡ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΈΡΡΡΠΈΡ ΡΡΠ΅Π΄ΠΎΠ².
β’ Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° double checked locking. ΠΠ»Ρ double/long ΡΠΈΠΏΠΎΠ² Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΎΠ½Π° ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Π°ΡΠΎΠΌΠΈΠΊΠΈ
π18π₯3β‘1
Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°?
Anonymous Quiz
9%
int
36%
Object
32%
Integer
23%
ΠΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
π24π³6π₯4π1
ΠΠ°ΠΊ ΠΏΠΎΠΉΠΌΠ°ΡΡ exception ΠΈΠ· Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΡΠ΅Π΄Π°?
ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Thread.UncaughExceptionHandler
ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Thread.UncaughExceptionHandler
π28β‘5π₯3