ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΎΠ±ΡΠΈΠΉ ΡΠ΅ΡΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΡΡ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈΠ»ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ°), ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΡΠΎ ΡΠΈΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ, Π½ΠΎ ΡΠ΅Π΄ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ β ΠΎΠ±ΡΡΠ½ΡΠΉ synchronized ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΎΡΠΌΠΎΠ·ΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. Π ΡΠ°ΠΊΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ReentrantReadWriteLock ΠΈΠ· java.util.concurrent. ΠΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠ°Ρ: - Read Lock β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ ΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ - Write Lock β ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π·Π°ΠΏΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΠΎΡΠΎΠΊΡ ΠΈ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π²ΡΠ΅Ρ
ΠΎΡΡΠ°Π»ΡΠ½ΡΡ
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ: Π΄Π΅ΡΡΡΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΌΠΎΠ³ΡΡ ΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, Π° Π·Π°ΠΏΠΈΡΡ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΠΎ. ΠΠΎΠ³Π΄Π° ΡΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ: - Π΄Π°Π½Π½ΡΠ΅ ΡΠΈΡΠ°ΡΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ - Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΡΡ ΡΠ΅Π΄ΠΊΠΎ - Π²Π°ΠΆΠ½ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ throughput ΡΠΈΡΡΠ΅ΠΌΡ ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: ΠΊΡΡ Π² ΡΠ΅ΡΠ²ΠΈΡΠ΅, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅, in-memory storage, state ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ. import java.util.concurrent.locks.ReentrantReadWriteLock; public class SharedValue { private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); private int value = 0; public int r
π Java: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ReentrantReadWriteLock, ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π½ΠΈΠΉ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π·Π°ΠΏΠΈΡΠ΅ΠΉ
14Β Π°ΠΏΡΠ΅Π»Ρ14Β Π°ΠΏΡ
1 ΠΌΠΈΠ½