JavaRush
Акция
УнивСрситСт
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅
ΠšΡƒΡ€ΡΡ‹
Π—Π°Π΄Π°Ρ‡ΠΈ
ΠžΠΏΡ€ΠΎΡΡ‹
Π˜Π³Ρ€Ρ‹
ΠŸΠΎΠΌΠΎΡ‰ΡŒ
Π“Ρ€Π°Ρ„ΠΈΠΊ ΠΏΠΈΠ½ΠΊΠΎΠ²
Π‘Ρ‚Π°ΠΆΠΈΡ€ΠΎΠ²ΠΊΠ°
БообщСство
ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ
Π€ΠΎΡ€ΡƒΠΌ
Π§Π°Ρ‚
Π‘Ρ‚Π°Ρ‚ΡŒΠΈ
Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ успСха
Активности
ΠžΡ‚Π·Ρ‹Π²Ρ‹
Подписки
БвСтлая Ρ‚Π΅ΠΌΠ°

Π›Π΅ΠΊΡ†ΠΈΠΈ

  • ΠžΡ‚Π·Ρ‹Π²Ρ‹
  • О нас
  • CS50
ΠΠ°Ρ‡Π°Ρ‚ΡŒ
ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅
ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅
  • МоС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅
  • ΠšΡƒΡ€ΡΡ‹
  • УнивСрситСт
  • ΠšΠ°Ρ€Ρ‚Π° квСстов
  • Π›Π΅ΠΊΡ†ΠΈΠΈ
  • Scoped Values ΠΈ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² (Java 21+)

    JAVA 25 SELF
    57 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ,4 лСкция
    Π Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ классичСский ThreadLocal тСряСт Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² ΠΌΠΈΡ€Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΈ ΠΊΠ°ΠΊ Π΅ΠΌΡƒ Π½Π° смСну ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ScopedValue: контСкст, привязанный ΠΊ области выполнСния, Π° Π½Π΅ ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΡƒ. ΠŸΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ контСкста (ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, REQUEST_ID), Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ scopes ΠΈ ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅, интСграция с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ( Executors. newVirtualThreadPerTaskExecutor()). ΠžΠ±ΡΡƒΠΆΠ΄Π°Π΅ΠΌ сравнСниС ThreadLocal vs ScopedValue, практичСскиС совСты, ограничСния ΠΈ взгляд Π½Π° Structured Concurrency (preview).
    ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°
  • Structured Concurrency

    JAVA 25 SELF
    58 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ,0 лСкция
    Structured Concurrency ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ…Π°ΠΎΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² ΡƒΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ Π·Π°Π΄Π°Ρ‡: Π²Ρ‹ запускаСтС ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ StructuredTaskScope, Π΄ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅ΡΡŒ ΠΈΡ… Ρ‡Π΅Ρ€Π΅Π· join(), Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ошибки throwIfFailed() ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ resultNow()/ result(). Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ShutdownOnFailure ΠΈ ShutdownOnSuccess, сравним с CompletableFuture, посмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΎΡ€Π° HTTP ΠΈ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΏΡ€ΠΈ использовании структурированной конкурСнтности.
    ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°
  • ΠžΡ‚ΠΌΠ΅Π½Π° Π·Π°Π΄Π°Ρ‡ ΠΈ тайм‑ауты сквозь стСк

    JAVA 25 SELF
    58 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ,1 лСкция
    Как ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄ΠΎΠ»Π³ΠΈΠ΅ ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Java: ΠΊΠΎΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· Thread.interrupt(), ΠΎΡ‚ΠΌΠ΅Π½Π° Π·Π°Π΄Π°Ρ‡ Ρ‡Π΅Ρ€Π΅Π· Future.cancel() ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ CancellationException, тайм‑ауты ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Π° Π² CompletableFuture ( orTimeout, completeOnTimeout), структурированная ΠΊΠΎΠ½ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ с StructuredTaskScope, ΠΎΠ±Ρ‰ΠΈΠΉ Π΄Π΅Π΄Π»Π°ΠΉΠ½ (time‑budget) ΠΈ проброс тайм‑аутов Π²Π½ΠΈΠ· ΠΏΠΎ стСку (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Instant/ Duration ΠΈ Scoped Values). Π Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ IO ΠΈ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки.
    ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°
  • Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ высокого уровня

    JAVA 25 SELF
    58 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ,2 лСкция
    Π’ Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ высокоуровнСвыС синхронизаторы ΠΈΠ· java.util.concurrent: CountDownLatch, CyclicBarrier, Phaser ΠΈ Exchanger. Учимся ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запуск ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ Ρ‡Π΅Ρ€Π΅Π· await()/ countDown(), ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ„Π°Π·Ρ‹ ΠΈ Π±Π°Ρ€ΡŒΠ΅Ρ€Π½Ρ‹Π΅ дСйствия с await(), ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ динамичСскими участниками «оркСстра» с register()/ arriveAndAwaitAdvance()/ arriveAndDeregister() ΠΈ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠΏΠ°Ρ€Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· exchange(). На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ массовый старт Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ² ΠΈ Β«ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ‚ΠΈΠΊΒ», Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки: ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΡΡ‚ΡŒ CountDownLatch, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ BrokenBarrierException ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ deregister(). Π’Π΅Π·Π΄Π΅ обходимся Π±Π΅Π· Π±ΠΎΠ»ΠΈ ΠΎΡ‚ wait()/ notify().
    ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°
  • StampedLock ΠΈ низкоспорныС счётчики

    JAVA 25 SELF
    58 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ,3 лСкция
    Когда ReentrantReadWriteLock ΠΈ классичСский ReadWriteLock Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Π±ΡƒΠΊΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ высокой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ, Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ StampedLock с оптимистичным Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ: связка tryOptimisticRead + validate Π΄Π°Ρ‘Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ «бСсплатныС» чтСния ΠΏΡ€ΠΈ Ρ€Π΅Π΄ΠΊΠΈΡ… записях. Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Ρ€Π΅ΠΆΠΈΠΌΡ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, Ρ€Π°Π±ΠΎΡ‚Ρƒ со ΡˆΡ‚Π°ΠΌΠΏΠ°ΠΌΠΈ, ограничСния ΠΏΠΎ reentrancy, сравним с ReentrantReadWriteLock, Π° Ρ‚Π°ΠΊΠΆΠ΅ посмотрим Π½Π° низкоспорныС счётчики β€” LongAdder ΠΈ LongAccumulator β€” ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ ΠΎΠ±Π³ΠΎΠ½ΡΡŽΡ‚ AtomicLong ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΠ΅ΠΉ. Π—Π°Π²Π΅Ρ€ΡˆΠΈΠΌ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ: кэш с ΠΏΡ€Π΅ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠΌ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΌΠΈΠ½ΠΈ-Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠΌ.
    ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°
  • Java Memory Model (JMM)

    JAVA 25 SELF
    58 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ,4 лСкция
    Π Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π° видимости ΠΈ упорядочивания ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Java Memory Model: Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ happens-before, ΠΊΠ°ΠΊ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ volatile, synchronized, Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ поля ( final), ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Π΅Π· Π½ΠΈΡ… Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ «нСсвСТиС» Π΄Π°Π½Π½Ρ‹Π΅. ПокаТСм Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ double-checked locking, Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ доступ Ρ‡Π΅Ρ€Π΅Π· VarHandle, влияниС Π»ΠΎΠΆΠ½ΠΎΠ³ΠΎ раздСлСния ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ @Contended, Π° Ρ‚Π°ΠΊΠΆΠ΅ практичСскиС замСчания ΠΏΡ€ΠΎ Thread.start()/ Thread.join(), Future.get() ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠ±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ JMH.
    ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°
  • ΠœΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись Ρ„Π°ΠΉΠ»ΠΎΠ²

    JAVA 25 SELF
    59 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ,0 лСкция
    ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ пособиС ΠΏΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Java: ΠΊΠΎΠ³Π΄Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускоряСт IO ΠΈ ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ‚, Π²Ρ‹Π±ΠΎΡ€ инструмСнтов β€” Thread, ΠΏΡƒΠ» ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· ExecutorService, Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ с CompletableFuture ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ стримы β€” Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ кускам Ρ‡Π΅Ρ€Π΅Π· FileChannel, бСзопасная запись Π² ΠΎΠ±Ρ‰ΠΈΠΉ Π»ΠΎΠ³ ΠΈ ограничСния ОБ/Π€Π‘. Π Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ запуска Π·Π°Π΄Π°Ρ‡, настройки ΠΏΡƒΠ»ΠΎΠ², ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ shutdown()/ awaitTermination() ΠΈ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки.
    ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°
  • ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ²: ForkJoin, Parallel Streams

    JAVA 25 SELF
    59 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ,1 лСкция
    ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ руководство ΠΏΠΎ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π² Java: ΠΊΠ°ΠΊ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² Stream API ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ parallel()/ parallelStream(), ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ настраиваСтся ForkJoinPool ΠΈ ΠΊΠΎΠ³Π΄Π° Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ RecursiveTask. ΠžΠ±ΡΡƒΠ΄ΠΈΠΌ, Π³Π΄Π΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускоряСт I/O, ΠΊΠ°ΠΊ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΌ ΠΏΡƒΠ»ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΈ ΠΊΠ°ΠΊ бСзопасно Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ рСсурсы ( try-with-resources). Π’ Ρ„ΠΈΠ½Π°Π»Π΅ β€” быстрый взгляд Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ доступ Ρ‡Π΅Ρ€Π΅Π· FileChannel для чтСния/записи частСй Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ².
    ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°
  • ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±Ρ…ΠΎΠ΄Ρ‹ Π€Π‘: Files.walk + parallel() ΠΈ ForkJoin

    JAVA 25 SELF
    59 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ,2 лСкция
    Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ±Ρ…ΠΎΠ΄ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ тысяч Ρ„Π°ΠΉΠ»ΠΎΠ²: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Files.walk() ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ стримы Ρ‡Π΅Ρ€Π΅Π· parallel(), ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ Ρ€ΠΎΠ»ΡŒ ForkJoinPool.commonPool() ΠΈ настраиваСм ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°. Π Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ExecutorService, Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ CPU-bound ΠΈ IO-bound Π·Π°Π΄Π°Ρ‡ΠΈ, пишСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€ подсчёта строк Π²ΠΎ всСх ".java"-Ρ„Π°ΠΉΠ»Π°Ρ… ΠΈ фиксируСм best practices.
    ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°
  • Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° куски

    JAVA 25 SELF
    59 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ,3 лСкция
    Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²: Π΄Π΅Π»ΠΈΠΌ ΠΈΡ… Π½Π° Ρ‡Π°Π½ΠΊΠΈ (chunking), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ доступ Ρ‡Π΅Ρ€Π΅Π· FileChannel ΠΈ memory-mapped Π±ΡƒΡ„Π΅Ρ€Ρ‹ MappedByteBuffer, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠΌ вычислСния с ExecutorService. Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°: position(...), read(...), write(...), ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ Π²Ρ‹Π±ΠΎΡ€Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ‡Π°Π½ΠΊΠ°, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ подсчёта слов ΠΈ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки (Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ‡Π°Π½ΠΊΠΎΠ², рСсурсы, количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²).
    ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°
  • ΠšΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²: producer–consumer

    JAVA 25 SELF
    59 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ,4 лСкция
    Π Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρƒ Producer–Consumer с бСзопасным ΠΎΠ±ΠΌΠ΅Π½ΠΎΠΌ Ρ‡Π΅Ρ€Π΅Π· BlockingQueue (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ArrayBlockingQueue), ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ put() ΠΈ take(), Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ backpressure ΠΈ ΠΊΠ°ΠΊ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Β«poison pillΒ» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "__END__", Π° Π½Π΅ null). ЗапускаСм ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π΅ΠΉ Ρ‡Π΅Ρ€Π΅Π· ExecutorService, добавляСм Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки.
    ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°
  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΠΎΠ΄ΡƒΠ»ΠΈ: Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹

    JAVA 25 SELF
    60 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ,0 лСкция
    Π Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ, Π·Π°Ρ‡Π΅ΠΌ Java 9 принСсла ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΡƒΡŽ систСму JPMS: Ρ‡Π΅ΠΌ ΠΏΠ»ΠΎΡ… Β« classpath-partyΒ», ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ вводят Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ видимости Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ module-info.java ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ module, exports, requires, opens, uses/ provides. ΠžΠ±ΡΡƒΠ΄ΠΈΠΌ прСимущСства (инкапсуляция, явныС зависимости, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, jlink), мСста примСнСния (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ java.base, java.sql), ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Π½ΡŽΠ°Π½ΡΡ‹ ΠΈ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΏΡ€ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ (Π·Π°Π±Ρ‹Ρ‚Ρ‹ΠΉ exports, ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ requires, Π΄ΡƒΠ±Π»ΠΈ ΠΈΠΌΠ΅Π½ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ).
    ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°
  • 1
  • ...
  • 25
  • 26
  • 27
  • 28
  • 29
  • ...
  • 57
ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅
  • ΠšΡƒΡ€ΡΡ‹ программирования
  • РСгистрация
  • ΠšΡƒΡ€Ρ Java
  • ΠŸΠΎΠΌΠΎΡ‰ΡŒ ΠΏΠΎ Π·Π°Π΄Π°Ρ‡Π°ΠΌ
  • Π¦Π΅Π½Ρ‹
БообщСство
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ
  • Π‘Ρ‚Π°Ρ‚ΡŒΠΈ
  • Π€ΠΎΡ€ΡƒΠΌ
  • Π§Π°Ρ‚
  • Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ успСха
  • Активности
Компания
  • О нас
  • ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹
  • ΠžΡ‚Π·Ρ‹Π²Ρ‹
  • FAQ
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°
JavaRushJavaRush β€” это ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΎΠ½Π»Π°ΠΉΠ½-курс ΠΏΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ Java-программирования c нуля. Он содСрТит 1200 практичСских Π·Π°Π΄Π°Ρ‡ с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠΊ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΏΠΎ основам Java ΠΈ ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΠΈΡˆΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ курс Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°: ΠΈΠ³Ρ€Ρ‹, опросы, интСрСсныС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎΠ± эффСктивном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈ ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π΅ Java‑дСвСлопСра.
ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ
Π―Π·Ρ‹ΠΊ интСрфСйса
Русский
English Π£ΠΊΡ€Π°Ρ—Π½ΡΡŒΠΊΠ°
"ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Π°ΠΌΠΈ Π½Π΅ Ρ€ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ" Β© 2026 JavaRush
MastercardVisa
"ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Π°ΠΌΠΈ Π½Π΅ Ρ€ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ" Β© 2026 JavaRush